我有一行名为RowRDD的RDD。我只是想转换成DataFrame。从我在互联网上看到的不同地方的例子中,我看到我正在尝试RowRDD.toDF()我收到错误:
value toDF is not a member of org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]
答案 0 :(得分:6)
它不起作用,因为Row
不是Product
类型而createDataFrame
只有RDD
参数的RDD[A]
参数仅定义为A <: Product
RDD[Row]
。
如果要使用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)
相同,那么架构很容易生成:
Alex,10,0,6,3,7,4
Bob, 6,3,7,2,1,8