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

yey*_*ilk 13 scala apache-spark

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

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()
Run Code Online (Sandbox Code Playgroud)

zer*_*323 29

为了能够使用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
Run Code Online (Sandbox Code Playgroud)

  • 或者避免导入,只需使用`sqlContext.createDataFrame(myRDD)` (5认同)
  • 谢谢你的帮助.我试试你的情况,但它仍然是一样的.import sqlContext.implicits._是未使用的import语句,toDF也无法解析.所以,这可能是另一个错误.我的项目之前使用了spark-asssembly-1.2.1,我删除了它并导入了昨晚的spark-assembly-1.3.1. (4认同)
  • 谢谢,我得到了解决方案.我们也应该让`case class`脱离函数.这是解决方案[No TypeTage Solution](http://stackoverflow.com/questions/29143756/scala-spark-app-with-no-typetag-available-error-in-def-main-style-app) (2认同)