如何将pyspark的广播加入限制从一些m.b增加到g.b

7tofc5zh  于 2021-05-26  发布在  Spark
关注(0)|答案(0)|浏览(224)

首先让我告诉你我的方法是什么:-
我写了spark应用程序 aws glue 大约一个月前,把它搬到了prod,一直工作到上周。
以下是我的步骤:
重命名的列
添加列
已使用缓存()
加入两个 dataframe 使用广播连接。所以小table<1 g.b,我得到了至少1分钟的快速性能,每次加入。我有超过21张table。因此,使用广播和缓存有很多改进。

df = spark.read.option("delimiter","|").csv("s3://test-bucket//2017_2019_workers.csv")

df1 = spark.read.option("delimiter","|").csv("s3://test-bucket//2020_workers.csv")

aggregated_data = df.join(broadcast(df1),df.id == df1.id)

但现在的要求已经改变,因为小表不再是小的,它可以增加到4克b和 aws glue 正在失败

Spark Error: Total size of serialized results of 268 tasks (1400.5 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)

下面是我解决这个问题的方法,我考虑增加 spark.driver.maxResultSize = 4g.b 但工作还是失败了。
我考虑增加广播 spark.sql.autoBroadcastJoinThreshold 但经过一段时间后,glue etl marketplace无法对null进行迭代:发生了异常
我是否需要增加更多的spark驱动程序内存,以便数据可以溢出到所有节点。
如何解决此问题?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题