在 Spark 与 Spark 广播变量中处理 Hive Lookup 表

Processing Hive Lookup tables in Spark vs Spark Broadcast variables

我有两个数据集名称 dataset1dataset2dataset1 就像

empid  empame
101    john
102    kevin

dataset2就像

empid  empmarks  empaddress
101      75        LA
102      69        NY

dataset2 将非常庞大,我需要对这两个数据集进行一些操作,并需要从以上两个 datasets 中获取结果。 据我所知,现在我有两种选择来处理这些数据集:

1.Store dataset1(尺寸较小)作为 hive 查找 table 并且必须处理他们通过 Spark

2.By 使用 Spark 广播变量 我们可以处理这些 dataset.

任何人请告诉我哪个是更好的选择。

这应该是比提到的那 2 个选项更好的选项。

因为你有公共密钥,你可以进行内部连接。

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

你也可以像这样使用broadcast function/hint。这意味着你告诉框架小数据帧,即 dataset1 应该广播给每个执行者。

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

另请查看更多详情..

  • DataFrame join optimization - Broadcast Hash Join广播连接如何工作。