hadoop处理spark和spark广播变量中的配置单元查找表

h4cxqtbf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(370)

我有两个数据集的名字 dataset1 以及 dataset2 以及 dataset1 就像

empid  empame
101    john
102    kevin

以及 dataset2 就像

empid  empmarks  empaddress
101      75        LA
102      69        NY

这个 dataset2 将是非常巨大的,我需要处理这两个数据集上的一些操作,并需要从上述两个结果 datasets . 据我所知,现在我有两种方法来处理这些数据集:
1.将dataset1(大小较小)存储为配置单元查找表,并必须通过spark进行处理
2.通过使用spark广播变量,我们可以处理这些 dataset .
任何人请告诉我哪一个是更好的选择。

svdrlsy4

svdrlsy41#

这应该是比上面提到的两个更好的选择。
既然你有共同的关键,你可以做内部连接。

dataset2.join(dataset1, Seq("empid"), "inner").show()

你可以用 broadcast 函数/提示也是这样。这意味着您要告诉framework小Dataframe(即dataset1)应该广播给每个执行器。

import org.apache.spark.sql.functions.broadcast
dataset2.join(broadcast(dataset1), Seq("empid"), "inner").show()

更多细节请参见。。
Dataframe连接优化-广播哈希连接广播连接将如何工作。
spark中广播对象的最大尺寸是多少

相关问题