Spark中的Hadoop DistributedCache功能

Mik*_*kia 6 hadoop distributed-cache distribute apache-spark

我正在寻找类似于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);
Run Code Online (Sandbox Code Playgroud)

这使程序能够理解变量globalIndex包含的内容.到目前为止它是一个可能适合我的补丁,但我认为它不是最好的解决方案.对于相当大的数据集或大量变量,它仍然有效吗?

注意:我正在使用位于多个EC2实例的独立群集上运行的Spark 1.0.0.

Sai*_*hna 6

请看一下SparkContext.addFile()方法.猜猜这就是你要找的东西.