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)