广播连接以有效地连接SPARK中的两个数据框

时间:2018-12-14 15:27:36

标签: python apache-spark join pyspark hadoop-partitioning

我有一个DataFrame df1,其中有大约200万行。我已经基于名为ID的键对其进行了重新分区,因为数据基于ID-

df=df.repartition(num_of_partitions,'ID')

现在,我希望基于公共列df,将此DataFrame加入到相对较小的df2 hospital_code中,但是我不想失去了基于ID的基于df的分区-

df.join(df1,'key','left')

我已经读到,如果一个DataFrame大于另一个DataFrame,那么最好使用如下所示的broadcast联接,这将维护较大DataFrame df的分区。但是,我不确定。

from pyspark.sql.functions import broadcast
df.join(broadcast(df1),'key','left')

任何人都可以建议解决此问题的有效方法是什么,以及如何在不对延迟和混洗相关问题等做出任何妥协的情况下维护较大的DataFrame的分区程序?

0 个答案:

没有答案