【发布时间】:2016-02-10 20:29:32
【问题描述】:
我正在尝试构建一个组件,它可以将大型数据集动态连接到几个小得多的数据集。我已经将大小数据集作为数据帧保存在内存中。随着用户输入的出现,我需要选择大型数据集的一个子集,并使用来自较小数据集的一些信息来丰富它。
不幸的是,这些动态连接被证明是昂贵的,大约是几分钟而不是几秒钟。我想探索的一条途径是将较小数据集的副本运送到集群上的所有节点,以便在每个节点上同时进行连接,并在最后收集结果。但是,我不确定执行此操作的最佳方法。
Broadcast variables 似乎是跨节点传送数据以进行计算的唯一方法。但是,Spark 文档并没有过多地说明适当的用例。我上面描述的内容是否适合广播变量?是否可以接受甚至可以使用数据帧作为广播变量?是否有其他更好的途径可以让我快速加入此类数据框?
【问题讨论】:
-
是否可以接受甚至可以使用数据帧作为广播变量 - 参见例如stackoverflow.com/q/35235450/1560062。还有其他方法可以处理参考数据,包括文件分发或访问外部系统,但这对 SO 来说不是一个好问题。
-
谢谢,这很有帮助。您是否知道任何资源可用于了解有关在 Spark 上处理参考数据的更多信息?
标签: apache-spark spark-dataframe