Spark中的分布式缓存的等价物?

时间:2015-06-25 00:07:55

标签: java scala hadoop apache-spark

在Hadoop中,您可以使用分布式缓存在每个节点上复制只读文件。在Spark中这样做的等效方法是什么?我知道广播变量,但这只适用于变量,而不是文件。

2 个答案:

答案 0 :(得分:6)

看一下SparkContext.addFile()

  

在每个节点上添加要使用此Spark作业下载的文件。传递的路径可以是本地文件,HDFS(或其他Hadoop支持的文件系统)中的文件,也可以是HTTP,HTTPS或FTP URI。要在Spark作业中访问该文件,请使用SparkFiles.get(fileName)查找其下载位置。

     

如果recursive选项设置为true,则可以给出目录。目前,目录仅支持Hadoop支持的文件系统。

答案 1 :(得分:-3)

如果您的文件是文本文件,生活在HDFS中,那么,您可以使用:

textFile("<hdfs-path>")&#34; SparkContext &#34;。

此调用将为您提供一个RDD,您可以使用以下方法保存节点:&#34; persist()&#34;那个RDD。

此方法可以在MEMORY / DISK中保留文件数据(序列化/反序列化)。

参考:

http://spark.apache.org/docs/latest/programming-guide.html#which-storage-level-to-choose