Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Spark/Scala中将数组[行]转换为数据帧_Scala_Apache Spark_Spark Dataframe - Fatal编程技术网

在Spark/Scala中将数组[行]转换为数据帧

在Spark/Scala中将数组[行]转换为数据帧,scala,apache-spark,spark-dataframe,Scala,Apache Spark,Spark Dataframe,我想将Array[org.apache.spark.sql.Row]转换为DataFrame。 有谁能给我建议一个更好的方法吗 我尝试先将其转换为RDD,然后尝试将其转换为Dataframe,但当我对Dataframe执行任何操作时,会显示异常 val arrayOfRows = myDataFrame.collect().map(t => myfun(t)) val distDataRDD = sc.parallelize(arrayOfRows) val newDataframe =

我想将
Array[org.apache.spark.sql.Row]
转换为
DataFrame
。 有谁能给我建议一个更好的方法吗

我尝试先将其转换为
RDD
,然后尝试将其转换为
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
中计算记录时,它给了我一个计数以及一个警告,其中一个阶段包含一个非常大的任务。我想我做错了什么。请帮忙

第一行有一个bug
collect
返回数组,而
map
是一种对数据帧/rdd进行操作的方法


请改为尝试
val arrayOfRows=myDataFrame.map(t=>myfun(t)).collect()

当我更改org.apache.spark.SparkException的顺序时,我遇到了这个错误:任务不序列化arrayOfRows实际上是DataFrame类型的,因此不需要第2行和第3行(sc.parallelize接受RDD而不是数据帧,这是新异常背后的原因)我一进入第一行就得到了错误
val arrayOfRows=myDataFrame.collect().map(t=>myfun(t))
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