值 toDF 不是成员 org.apache.spark.rdd.RDD

Posted

技术标签:

【中文标题】值 toDF 不是成员 org.apache.spark.rdd.RDD【英文标题】:value toDF is not a member org.apache.spark.rdd.RDD 【发布时间】:2016-07-05 09:34:17 【问题描述】:
def main(args: Array[String]) 
    val conf = new SparkConf().setMaster("local").setAppName("test")
    val sc = new SparkContext(conf)
    //require spark sql environment
    val sqlContext = new org.apache.spark.sql.SQLContext(sc)
    import sqlContext.implicits._
    val df1 = sc.makeRDD(1 to 5).map(i => (i, i * 2)).toDF("single", "double")
    sc.stop()
  

我已经写了“import sqlContext.implicits._”; 但是它仍然不起作用。它就在 spark-shell 中。 为什么在这种情况下不正确? 我已经看到了许多其他将 rdd 转换为数据框的方法, 但我的大部分代码都写成 toDF()。 如何使 toDF 工作? 错误:

Error:(25, 55) value toDF is not a member of org.apache.spark.rdd.RDD[(Int, Int)]
val df1 = sc.makeRDD(1 to 5).map(i => (i, i * 2)).toDF("single", "double")
                                                  ^

【问题讨论】:

这很有趣,我无法重新创建它,而且您的代码在这里运行良好,您对sqlContext 的调用是正确的;你想尝试添加import org.apache.spark.sql._ 吗?也许是您的 IDE 没有正确响应?如果您使用的是 Eclipse,您可能需要执行 sbt eclipse 或其他操作以将库包含在调试器中。 你的构建配置是什么? Spark 的版本? @GameOfThrows 我相信 OP 使用的是 spark 版本 你愿意分享你的构建文件的相关依赖部分吗? sbt 还是 maven? @eliasah ofc 那,面对掌心时刻。 【参考方案1】:

toDF() 已在 Spark 1.3 版中添加, 您必须使用旧版本(小于 1.3)的 Spark,这就是您收到此错误的原因。 要解决此问题,请使用 Spark 1.3 或更高版本。

【讨论】:

以上是关于值 toDF 不是成员 org.apache.spark.rdd.RDD的主要内容,如果未能解决你的问题,请参考以下文章

值 toDF 不是 org.apache.spark.rdd.RDD[(Long, org.apache.spark.ml.linalg.Vector)] 的成员

toDF 不是 Seq 的成员,toDS 不是 Seq 的成员

错误:值 toDF 不是 org.apache.spark.rdd.RDD[org.apache.kafka.clients.consumer.ConsumerRecord[String,String

在 Spark 中创建数据帧时出错

值“属性”不是“模型”的成员

toDF() 不处理 RDD