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

标签 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 将非常庞大,我需要对这两个数据集进行一些操作,并需要从以上两个 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/

相关文章:

python - 如何使用 python 在 hadoop 流作业中使用文件?

hadoop - 使用hadoop配置配置单元

apache-spark - 如何并行运行多个Spark作业?

python - 如何仅对数据框中的特定行进行排名?

python - 在 Pandas 中添加特定格式的新 timedelta 值列

hadoop dfs -copyFromLocal src dest

serialization - 将 JAXB 对象加载到 Apache Hive/Impala

apache-spark - dataproc 上的 Spark 流抛出 FileNotFoundException

apache-spark - 如何在不重新分区的情况下并行执行 Spark UDF

python - 使用 pandas dataframe 按时间顺序转换日期