我正在寻找类似于Spark中Hadoop的分布式缓存的功能。我需要一个相对较小的数据文件(带有一些索引值)出现在所有节点中,以便进行一些计算。有什么方法可以在 Spark 中实现这一点吗?
到目前为止,我的解决方法包括将索引文件作为正常处理进行分发和减少,这在我的应用程序中大约需要 10 秒。之后,我将指示它的文件保留为广播变量,如下所示:
JavaRDD<String> indexFile = ctx.textFile("s3n://mybucket/input/indexFile.txt",1);
ArrayList<String> localIndex = (ArrayList<String>) indexFile.collect();
final Broadcast<ArrayList<String>> globalIndex = ctx.broadcast(indexVar);
这使得程序能够理解变量的含义全球指数包含。到目前为止,这个补丁可能对我来说没问题,但我认为这不是最好的解决方案。对于更大的数据集或大量变量,它仍然有效吗?
注意:我使用的是在位于多个 EC2 实例的独立集群上运行的 Spark 1.0.0。
请看一下SparkContext.addFile()
方法。
猜猜这就是您正在寻找的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)