在pySpark中处理非常小的静态表



我目前正在使用Databricks来处理来自Azure数据湖的数据。大部分数据被读入pySpark数据框架,是相对较大的数据集。然而,我必须在较小的静态表上执行一些连接来获取额外的属性。

目前,我能做到这一点的唯一方法是将那些较小的静态表也转换为pySpark数据框架。我只是好奇是否使用这样一个小表作为pySpark数据框架是一个不好的做法?我知道pySpark适用于需要分布的大型数据集,但鉴于我的大型数据集在pySpark数据框中,我认为我必须将较小的静态表转换为pySpark数据框,以便进行适当的连接。

任何关于最佳实践的提示都将受到赞赏,因为它涉及到与非常小的数据集的连接。也许我把事情复杂化了,这不是什么大事,但我很好奇。提前感谢!

看一下Broadcast join。这里有精彩的解释https://mungingdata.com/apache-spark/broadcast-joins/

在您的情况下,最佳实践是将您的小dfbroadcast并将广播的df连接到您的大df,如下面的代码:

val broadcastedDF = sc.broadcast(smallDF)
largeDF.join(broadcastedDF)

最新更新