1
我有一个称为RowRDD的行的RDD。我只是试图转换成DataFrame。从我所看到的从不同的地方在互联网上的例子,我看到我shoudl试图RowRDD.toDF()我收到错误:toDF()不处理RDD
value toDF is not a member of org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]
我有一个称为RowRDD的行的RDD。我只是试图转换成DataFrame。从我所看到的从不同的地方在互联网上的例子,我看到我shoudl试图RowRDD.toDF()我收到错误:toDF()不处理RDD
value toDF is not a member of org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]
它不起作用,因为不一个Product
类型和createDataFrame
与作为单个RDD
自变量只定义为RDD[A]
其中A <: Product
。
如果你想使用RDD[Row]
你必须提供一个模式作为第二个参数。如果你认为它应该是显而易见的。 仅仅是Any
的一个容器,因此它不能提供足够的模式推理信息。
假设这是相同的RDD
如your previous question然后架构中定义是很容易产生:
import org.apache.spark.sql.types._
import org.apache.spark.rdd.RD
val rowRdd: RDD[Row] = ???
val schema = StructType(
(1 to rowRdd.first.size).map(i => StructField(s"_$i", StringType, false))
)
val df = sqlContext.createDataFrame(rowRdd, schema)