【问题标题】:SPARK/SQL:spark can't resolve symbol toDFSPARK/SQL:spark 无法将符号解析为 DF
【发布时间】:2015-09-17 13:53:12
【问题描述】:

在我的项目中,我的外部库是spark-assembly-1.3.1-hadoop2.6.0,如果我按'.',IDE 会通知我toDF(),但它告诉我在我编码时无法解析符号toDF()。我'很抱歉,我在 Apache Spark 文档中找不到 toDF()

case class Feature(name:String, value:Double, time:String, period:String)
val RESRDD = RDD.map(tuple => {
    var bson=new BasicBSONObject();
    bson.put("name",name);
    bson.put("value",value);
    (null,bson);
})

RESRDD
 .map(_._2)
 .map(f => Feature(f.get("name").toString, f.get("value").toString.toDouble))
 .toDF()

【问题讨论】:

  • 欢迎来到 Stack Overflow @yeyimilk。请务必阅读How to create a Minimal, Complete, and Verifiable example。您提供的代码不可重现,缺少示例输入,包含语法错误和不相关的转换,格式错误且标记不正确(它如何连接到 MySql?也许是 MongoDB,但 BSON 部分与其余代码的相关性相当松散)。请解决此问题,否则您可能会投下反对票和关闭投票。
  • 很抱歉没有表达清楚。我使用 BSON 只是为了解释 RESRDD 的类型,将其保存到 MongoDB。在我的项目中,我也应该将其保存到 Mysql。
  • 我的观点是,将问题减少到最低限度总是一个好主意。像sc.parallelize(List(Feature("a", 1.0, "a", "a"))).toDF 这样的东西应该足以重现问题。无论如何,我希望你觉得我的回答很有用,不要觉得我的 cmets 太苛刻了。
  • 嗨,我创建了一个新项目并使用了 Apache-Spark 的公会示例,当我编译它时,它显示 NoTagType for Person。
  • 如果与此问题没有直接关系,请将其作为单独的问题发布。

标签: scala apache-spark


【解决方案1】:

为了能够使用toDF,您必须先导入sqlContext.implicits

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._

case class Foobar(foo: String, bar: Integer)

val foobarRdd = sc.parallelize(("foo", 1) :: ("bar", 2) :: ("baz", -1) :: Nil).
    map { case (foo, bar) => Foobar(foo, bar) } 

val foobarDf = foobarRdd.toDF
foobarDf.limit(1).show

【讨论】:

  • 或者避免导入,直接使用sqlContext.createDataFrame(myRDD)
  • 感谢您的帮助。我试试你的情况,但它保持不变。 import sqlContext.implicits._ 是未使用的导入语句,toDF 也无法解析。所以,这可能是另一个错误。我的项目之前使用了spark-assembly-1.2.1,昨晚我删除了它并导入了spark-assembly-1.3.1。
  • 谢谢,我知道了。我们也应该让case class 退出函数。这是解决方案No TypeTage Solution
【解决方案2】:

这是对这个问题的一个很晚的回复,但只是为了那些仍在寻找答案的人:

在 Spark 1.6 上尝试相同的命令,它会起作用。

我遇到了同样的问题并在谷歌中搜索并没有得到解决方案,然后我将 Spark 从 1.5 升级到 1.6 并且它工作正常。

如果您不知道自己的 Spark 版本:

spark-submit --version (from command prompt)
sc.version (from Scala Shell)

【讨论】:

    猜你喜欢
    • 2016-10-31
    • 2022-01-05
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    相关资源
    最近更新 更多