问题引出
我们在日常的特征工程中,常常需要将多张表进行关联操作,也就是所谓的join。现在有三张表A,B,C,其中A表数据总大小约300M, B表总数据大小约15G,C表数据总大小约400G,现在的需求是对这三张表做join,该如何实现?
常规做法
最简单的一种实现,就是先将其中的两张表join,再将剩下的一张表做join,代码如下:
sc = SparkSession\
.builder\
.appName("Test")\
.getOrCreate()
A = sc.sparkContext.textFile("...")
B = sc.sparkContext.textFile("...")
C = sc.sparkContext

本文探讨了在pyspark中处理大规模数据join时遇到的性能问题,提出通过广播小表、调整join策略、设置合适的shuffle参数以及使用checkpoint来优化。对于大表,直接广播可能导致内存不足,应谨慎使用map-join。优化后的代码在7分钟内完成了原本3小时未完成的任务。
最低0.47元/天 解锁文章
1896

被折叠的 条评论
为什么被折叠?



