![](/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.