来源于这里:
解释:如果你导入sqlContext.implicits._
,你就有了一个将RDD
转换成DataSetHolder
(rddToDataSetHolder
)的隐式方法,然后在DataSetHolder
上调用toDF
方法。
是的,您应该像这样导入sqlContext implicits:
val sqlContext = //create sqlContext
import sqlContext.implicits._
val df = RDD.toDF()
在调用RDD的“toDF”之前
是的,我终于找到了解决这个问题的方法。这个问题困扰着我很久,这篇文章真是救了我一命。我正在尝试从日志文件中泛型地加载数据到一个可变的 List,并将其转换为 DF。然而,由于它是可变的,而 Spark 2.1.1 已经改变了 toDF 的实现方式,无论如何列表都无法被转换。最后,我甚至想到将数据保存到文件中,然后使用 .read 将其加载回来。但是,5 分钟前这篇文章就救了我的一天。
我按照描述中的完全相同的方式进行了操作。
在将数据加载到可变列表后,我立即使用了
import spark.sqlContext.implicits._
val df = <mutable list object>.toDF
df.show()
val orders = sc.textFile("/user/gd/orders")
val ordersDF = orders.toDF()