Dataframe 广播变量或广播联接哪一个性能更好?

Dataframe 广播变量或广播联接哪一个性能更好?,dataframe,apache-spark,join,apache-spark-sql,broadcast,Dataframe,Apache Spark,Join,Apache Spark Sql,Broadcast,在我的项目中,我正在使用Spark 2.4.1和Java8 我有一个场景,需要查找另一个表/数据集,该表/数据集有两个字段,即国家名称和国家代码 另一个流数据中有国家代码列,我需要在目标/结果数据框中映射相应的国家名称 据我所知,我们可以使用join来实现上述功能,使用广播变量和join 那么从性能的角度来看,这里哪一个更好?是什么 处理此类用例的spark标准?非常诚实地说,它们应该执行类似的操作,因为它们实际上在做相同的事情 允许spark内在地进行广播连接可能有一个非常微小的优势,但这可能

在我的项目中,我正在使用Spark 2.4.1和Java8

我有一个场景,需要查找另一个表/数据集,该表/数据集有两个字段,即国家名称和国家代码

另一个流数据中有国家代码列,我需要在目标/结果数据框中映射相应的国家名称

据我所知,我们可以使用join来实现上述功能,使用广播变量和join

那么从性能的角度来看,这里哪一个更好?是什么
处理此类用例的spark标准?

非常诚实地说,它们应该执行类似的操作,因为它们实际上在做相同的事情

允许spark内在地进行广播连接可能有一个非常微小的优势,但这可能取决于事实表的大小和广播变量开销的总体影响

需要注意的一点是,只有10Mb,因此如果维度表大于10Mb,则需要显式使用提示。

1)这更像是一种直觉,世界上只有不到200个国家,而您的数字是<1kb/国家,因此它肯定低于10Mb阈值。2) 是的,这是一个简单的查找,但我的观点是spark中的广播连接正在以同样的方式为您执行查找工作。可能包括一些催化剂优化。