scala SPARK/SQL:spark无法将符号解析为DF

irtuqstp  于 7个月前  发布在  Scala
关注(0)|答案(3)|浏览(78)

在我的项目中,我的外部库是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()
gstyhher

gstyhher1#

要使用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
cedebl8k

cedebl8k2#

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

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

我也遇到了同样的问题,在谷歌上搜索,没有得到解决方案,然后我将Spark从1.5升级到1.6,它工作了。
如果你不知道你的Spark版本:

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

roqulrg33#

您可以导入sqlContext.implicits如下:

val spark = SparkSession.builder().getOrCreate()
    val sqlContext = spark.sqlContext
    import sqlContext.implicits._

相关问题