【发布时间】:2021-11-15 21:09:24
【问题描述】:
假设我有 2 张桌子,
- 一个(1000 行)
- B(1B 行)
左表:A 右表:B
我需要将 A 与 B 左连接,因为我希望 A 的所有行都保留在输出中。
正如预期的那样,如果我在进行左连接,我们无法广播 A(以加快速度)。
D = A.join(B,'key','left)
所以,我一直在做 A & B 的内部连接,它允许广播。中间输出,比如 C,是小得多的表。然后我离开了加入A和C。 根据我的经验,这要快得多,并且使用的资源也更少。
C = B.join(F.broadcast(A),'key','inner')
D = C.join(A, 'key','right')
这种方法有什么缺点吗?错过了边缘情况?
【问题讨论】:
标签: apache-spark pyspark hive apache-spark-sql