首先让我告诉你我的方法是什么:-
我写了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驱动程序内存,以便数据可以溢出到所有节点。
如何解决此问题?
暂无答案!
目前还没有任何答案,快来回答吧!