原标题:除了HDFS之外,还有什么其他DFS可以激发支持(并推荐)?
我很高兴使用spark和elasticsearch(带有elasticsearch-hadoop驱动程序)和几个巨大的集群。
我不时会将整个数据集拉出来,处理每个文档,并将所有数据放入不同的Elasticsearch(ES)集群中(是的,数据迁移也是如此)。
目前,无法将集群中的ES数据读入RDD,并使用spark + elasticsearch-hadoop将RDD写入另一个RDD,因为这将涉及从RDD交换SparkContext
。所以我想将RDD写入目标文件,然后再将它们读回到具有不同SparkContext
s的RDD中。
然而,问题出现了:我需要一个DFS(分布式文件系统)来共享整个spark集群中的大文件。最流行的解决方案是HDFS,但我会非常避免将Hadoop引入我的堆栈。是否还有其他推荐的DFS可以支持火花?
更新
感谢@Daniel Darabos的回答,我现在可以使用以下Scala代码从/向不同的ElasticSearch集群读取和写入数据:
val conf = new SparkConf().setAppName("Spark Migrating ES Data")
conf.set("es.nodes", "from.escluster.com")
val sc = new SparkContext(conf)
val allDataRDD = sc.esRDD("some/lovelydata")
val cfg = Map("es.nodes" -> "to.escluster.com")
allDataRDD.saveToEsWithMeta("clone/lovelydata", cfg)
答案 0 :(得分:3)
Spark使用hadoop-common库进行文件访问,因此Hadoop支持的任何文件系统都可以与Spark一起使用。我已经将它用于HDFS,S3和GCS。
我不确定我理解为什么你不只是使用elasticsearch-hadoop
。您有两个ES群集,因此需要使用不同的配置访问它们。 sc.newAPIHadoopFile
和rdd.saveAsHadoopFile
获取hadoop.conf.Configuration
个参数。因此,您可以毫无问题地使用两个具有相同SparkContext
的ES群集。