Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Scala spark中的rdd.collect().map,编译需要时间_Scala_Apache Spark_Apache Spark Sql_Bigdata - Fatal编程技术网

Scala spark中的rdd.collect().map,编译需要时间

Scala spark中的rdd.collect().map,编译需要时间,scala,apache-spark,apache-spark-sql,bigdata,Scala,Apache Spark,Apache Spark Sql,Bigdata,我正在处理一个任务,在这个任务中,我使用多个数据帧并应用与另一个数据帧的连接 组合结果被映射,我使用的是pNodeArray.rdd.collect().map(f=>{ pNodeArray是我使用另一个数据帧创建的数据帧 df.groupBy("P_XX_M", "G_RM_XX_D", "B_CD_XD") .agg(collect_list(struct("col1","col2"......) var pmap = pNodeArray.rdd.collect().map(f=>

我正在处理一个任务,在这个任务中,我使用多个数据帧并应用与另一个数据帧的连接

组合结果被映射,我使用的是
pNodeArray.rdd.collect().map(f=>{

pNodeArray
是我使用另一个数据帧创建的数据帧

df.groupBy("P_XX_M", "G_RM_XX_D", "B_CD_XD")
.agg(collect_list(struct("col1","col2"......)

var pmap = pNodeArray.rdd.collect().map(f=>{
var P_ISD = if (f.getAs[Any]("P_ISD") != null) f.getAs("P_ISD").toString() else null
}).toList.groupBy(_._1).mapValues(_.map(_._2))
有没有简单的方法来解决这个问题,或者有不同的方法或建议来减少时间 例如:对于任务,我只使用一个ID,底层数据库有数百万条或更多记录。 对于一个ID,完成collect()需要35分钟。映射需要更多时间


如果可以,请取消
collect()
,或者至少尝试限制发送回驱动程序的数据量,以明显提高处理速度。您能给我们一些测试数据和所需的输出供我们处理吗?collect()将所有节点的数据提取到驱动程序节点。因此,它始终需要确定输出的要求并明智地使用它。为了知道是否所有执行器都在某个阶段使用,最好检查Spark History Server的executors选项卡中有多少执行器正在运行任务。我给出了如下配置,-executor memory 10g—驱动程序内存32g—num executors 20—executor核5,4个活动任务正在运行