Spark 2.0 Scala - RDD.toDF()

时间:2016-08-16 06:53:14

标签: scala apache-spark

我正在使用Spark 2.0 Scala。我可以使用toDF()方法将RDD转换为DataFrame。

val rdd = sc.textFile("/pathtologfile/logfile.txt")
val df = rdd.toDF()

但是对于我的生活,我无法在API文档中找到它的位置。它不属于RDD。但它在DataSet(link 1)下。但是我有一个RDD而不是DataSet。

此外,我无法在暗示下看到它(link 2)。

所以请帮助我理解为什么可以为我的RDD调用toDF()。这个方法从哪里继承?

4 个答案:

答案 0 :(得分:11)

它来自这里:

Spark 2 API

说明:如果您导入sqlContext.implicits._,则可以使用隐式方法将RDD转换为DataSetHolderrddToDataSetHolder),然后在toDF上调用DataSetHolder SELECT t.* FROM ( /* your UNION query here */ ) t ORDER BY t.InputDate OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY

答案 1 :(得分:3)

是的,您应该导入sqlContext含义:

val sqlContext = //create sqlContext

import sqlContext.implicits._

val df = RDD.toDF()

在RDD中呼叫“toDF”之前

答案 2 :(得分:2)

是的,我终于找到了一个想法,这个问题。这让我感到困扰,这篇文章是一个救生员。我试图将数据从日志文件一般加载到一个案例类对象,使其成为可变的List,这个想法是最终将列表转换为DF。但是因为它是可变的并且Spark 2.1.1已经改变了toDF实现,所以列表不希望转换的原因。我终于想到甚至覆盖将数据保存到文件并使用.read加载它。然而5分钟后,这篇文章救了我的一天。

我按照与描述完全相同的方式。

将数据加载到可变列表后,我立即使用

import spark.sqlContext.implicits._
val df = <mutable list object>.toDF 
df.show()

答案 3 :(得分:0)

我已经使用Spark 2做到了这一点。 它起作用了。

val orders = sc.textFile("/user/gd/orders")
val ordersDF = orders.toDF()