gpt4 book ai didi

apache-spark - 您如何使用 spark 和 elasticsearch-hadoop 从/写入不同的 ElasticSearch 集群?

转载 作者:行者123 更新时间:2023-11-29 02:48:34 25 4
gpt4 key购买 nike

原标题:除了HDFS,spark还支持(推荐)哪些DFS?

我很高兴将 spark 和 elasticsearch(带有 elasticsearch-hadoop 驱动程序)与几个巨大的集群一起使用。

时不时的,我想把整个集群的数据拉出来,处理每一个doc,然后全部放到不同的Elasticsearch(ES)集群中(是的,数据迁移也是如此)。

目前,无法使用 spark + elasticsearch-hadoop 将 ES 数据从集群读取到 RDD 并将 RDD 写入不同的集群,因为这将涉及从 RDD 交换 SparkContext。所以我想将 RDD 写入目标文件,然后再将它们读回具有不同 SparkContext 的 RDD。

但是,问题来了:然后我需要一个 DFS(分布式文件系统)来在我的整个 spark 集群中共享大文件。最流行的解决方案是 HDFS,但我会非常避免将 Hadoop 引入我的技术栈。还有其他推荐的spark支持的DFS吗?

更新如下

感谢@Daniel Darabos 在下面的回答,我现在可以使用以下 Scala 代码从不同的 ElasticSearch 集群读取数据/向不同的 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)

最佳答案

Spark 使用 hadoop-common 库进行文件访问,因此 Hadoop 支持的任何文件系统都可以与 Spark 一起使用。我已经将它与 HDFS、S3 和 GCS 一起使用。

我不确定我是否理解您为什么不只使用 elasticsearch-hadoop。您有两个 ES 集群,因此您需要使用不同的配置来访问它们。 sc.newAPIHadoopFilerdd.saveAsHadoopFile 采用 hadoop.conf.Configuration 参数。因此,您可以毫无问题地使用具有相同 SparkContext 的两个 ES 集群。

关于apache-spark - 您如何使用 spark 和 elasticsearch-hadoop 从/写入不同的 ElasticSearch 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com