Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Apache spark 使用spark对包含许多列的大数据帧进行排序,原因超过spark.driver.maxResultSize_Apache Spark_Yarn_Amazon Emr - Fatal编程技术网

Apache spark 使用spark对包含许多列的大数据帧进行排序,原因超过spark.driver.maxResultSize

Apache spark 使用spark对包含许多列的大数据帧进行排序,原因超过spark.driver.maxResultSize,apache-spark,yarn,amazon-emr,Apache Spark,Yarn,Amazon Emr,运行以下查询时: spark.read.parquet("hdfs:///mydataframe").orderBy('a, 'b, 'timestamp).show(100, false) 我的spark作业失败,但以下情况除外: org.apache.spark.SparkException:由于阶段失败而中止作业:705个任务(13.0 GB)的序列化结果的总大小大于spark.driver.maxResultSize(13.0 GB) 我有大约330列,其中一些相当

运行以下查询时:

spark.read.parquet("hdfs:///mydataframe").orderBy('a, 'b, 'timestamp).show(100, false)
我的spark作业失败,但以下情况除外:

org.apache.spark.SparkException:由于阶段失败而中止作业:705个任务(13.0 GB)的序列化结果的总大小大于spark.driver.maxResultSize(13.0 GB)

我有大约330列,其中一些相当大(结构数组等),数据帧总共约为200GB

我使用的是EMR(5.30,Spark 2.4.5)集群,由9台c5.24xlarge机器组成,驱动程序为m5.xlarge,默认的EMR配置(除了
Spark.driver.maxResultSize
之外,我将其增加到13gb,并使用纱线作为主控)

我可以看出,通过删除列,它可以在不超过驱动程序内存的情况下工作,但我想了解除了增加
spark.driver.maxResultSize
之外,是否还有其他解决方案可以解决这个问题。
我还想了解,驱动程序以何种方式参与排序阶段,以及是否有办法控制该阶段?

而不是进行显示,将结果记录到HDFS/S3。在数据帧上进行显示时,数据将发送到驱动程序。

不进行显示,而是将结果写入HDFS/S3。当您在数据帧上进行显示时,数据将被发送到驱动程序。

此数据存储了多少个分区??尝试使用
重新分区
功能增加分区数。您使用的spark版本是什么?数据存储在大约2000个文件中。我使用spark版本2.4.5此数据存储了多少个分区??尝试使用
重新分区
功能增加分区数。您使用的spark版本是什么?数据存储在大约2000个文件中。我使用的是spark版本2.4.5,该节目(100)是一个调试运行。我正在做的真正的工作实际上是将结果写入HDFS/S3,它也有同样的问题。你能在节目结束后展示代码吗?你在数数吗?节目结束后没有密码。我正在用shell运行它。也已作为提交作业的一部分运行。它和我发布的代码一样简单。show(100)是一个调试运行。我正在做的真正的工作实际上是将结果写入HDFS/S3,它也有同样的问题。你能在节目结束后展示代码吗?你在数数吗?节目结束后没有密码。我正在用shell运行它。也已作为提交作业的一部分运行。它和我发布的代码一样简单。