我有两个数据集名称 dataset1
和 dataset2
和 dataset1
就像
empid empame
101 john
102 kevin
和dataset2
就像
empid empmarks empaddress
101 75 LA
102 69 NY
dataset2
将非常庞大,我需要对这两个数据集进行一些操作,并需要从以上两个 dataset
中获取结果。
据我所知,现在我有两种选择来处理这些数据集:
1.将dataset1(较小的数据集)存储为<strong>hive lookup table,并通过Spark
处理它们2.通过使用Spark Broadcast Variables,我们可以处理这些数据集
。
任何人请告诉我哪个是更好的选择。
最佳答案
这应该是比提到的那 2 个选项更好的选项。
因为你有公共(public) key ,你可以进行内部连接。
dataset2.join(dataset1, Seq("empid"), "inner").show()
您也可以像这样使用broadcast
函数/提示。这意味着你告诉框架应该将小数据帧即 dataset1 广播给每个执行者。
import org.apache.spark.sql.functions.broadcast
dataset2.join(broadcast(dataset1), Seq("empid"), "inner").show()
另请查看更多详细信息..
关于hadoop - 在 Spark 与 Spark 广播变量中处理 Hive Lookup 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41113781/