![](/img/trans.png)
[英]Spark (Scala): How to turn an Array[Row] into either a DataSet[Row] or a DataFrame?
[英]Convert Array[Row] to DataFrame in Spark/Scala
我想將Array[org.apache.spark.sql.Row]
轉換為DataFrame
。 有誰能建議我一個更好的方法?
我嘗試先將其轉換為RDD
,然后嘗試將其轉換為Dataframe
,但是當我對DataFrame
執行任何操作時, DataFrame
顯示異常。
val arrayOfRows = myDataFrame.collect().map(t => myfun(t))
val distDataRDD = sc.parallelize(arrayOfRows)
val newDataframe = sqlContext.createDataFrame(distDataRDD,myschema)
這里myfun()
是一個返回Row (org.apache.spark.sql.Row)
的函數。 數組中的內容是正確的,我可以毫無問題地打印它。
但是當我試圖計算RDD
的記錄時,它給了我計數以及一個警告,其中一個階段包含一個非常大的任務。我想我做錯了什么。 請幫忙。
你在第一行有一個錯誤。 collect
返回一個Array,而map
是一個在DataFrames / RDD上運行的方法。
嘗試val arrayOfRows = myDataFrame.map(t => myfun(t)).collect()
代替。
case class PgRnk (userId : Long , pageRank: Double )
// create a case class
sc.parallelize(pg10.map(r1 => PgRnk(r1.getLong(0), r1.getDouble(1)))).toDS()
// convert into a dataset, sc.parallelize converts the array into a RDD, and then to DS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.