SPARK / SQL:spark无法解析符号toDF

时间:2015-06-30 16:42:13

标签: scala apache-spark

在我的项目中,我的外部库是spark-assembly-1.3.1-hadoop2.6.0,如果我按'。',IDE会通知我toDF(),但它通知我无法解析符号toDF()时我编写代码。很抱歉,我在Apache Spark doc中找不到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()

2 个答案:

答案 0 :(得分:27)

为了能够使用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

答案 1 :(得分:1)

对于这个问题,这是一个非常晚的回应,但仅仅是为了那些仍在寻找答案的人:

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

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

如果你不了解你的Spark版本:

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