繁体   English   中英

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

[英]How do you read and write from/into different ElasticSearch clusters using spark and elasticsearch-hadoop?

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

我很高兴在几个巨大的集群中使用 spark 和 elasticsearch(使用 elasticsearch-hadoop 驱动程序)。

有时,我想拉出整个数据集群,处理每个文档,并将它们全部放入不同的 Elasticsearch (ES) 集群(是的,数据迁移也是如此)。

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

但是,问题来了:然后我需要一个 DFS(分布式文件系统)来在整个 Spark 集群中共享大文件。 最流行的解决方案是 HDFS,但我非常避免将 Hadoop 引入我的堆栈。 是否有其他推荐的 Spark 支持的 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)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM