处理Spark与Spark Broadcast变量中的Hive Lookup表

时间:2016-12-13 04:33:31

标签: hadoop apache-spark dataframe spark-dataframe lookup

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

empid  empame
101    john
102    kevin

dataset2就像

empid  empmarks  empaddress
101      75        LA
102      69        NY

dataset2将非常庞大,我需要处理这两个数据集上的一些操作,并且需要从上面两个datasets获得结果。 据我所知,现在我有两个处理这些数据集的选项:

1.将 dataset1 (大小较小)存储为<​​strong>配置单元查找表,并且必须通过 Spark

处理它们

2.通过使用 Spark Broadcast Variables ,我们可以处理这些dataset

任何人都建议我哪一个是更好的选择。

1 个答案:

答案 0 :(得分:2)

这应该是比上述两个选项更好的选择。

因为你有共同密钥,你可以做内连接。

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

您也可以使用broadcast函数/提示。这意味着你要告诉框架,应该向每个执行者广播小数据帧,即数据集1。

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

另请查看更多详情..