在我的代码片段下方。
spark.read.table('schema.table_1').createOrReplaceTempView('d1') # 400 million records
spark.read.table('schema.table_2').createOrReplaceTempView('d1') $ 300 million records
stmt = "select * from d1 inner join d2 on d1.id = d2.id"
(
spark.sql(stmt).write('delta').mode('overwrite').saveAsTable('schema.table_3') # result count : 800 million records
)
集群大小为(32 GB内存,4核和6个工作线程)
来自 DAG 图片。
问题是
首先检查 Spark 中 stage 218 的随机大小,并检查密钥分配中的倾斜。因为高shuffle和join操作需要更多时间。
阶段219:在写入任务上花费更多时间(低shuffle读/写但高I/O),因为写操作较慢。
最佳优化技术: