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

标签 apache-spark elasticsearch hdfs elasticsearch-hadoop distributed-filesystem

原标题:除了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/

相关文章:

Hadoop HDFS - 保留许多部分文件或 concat?

apache-spark - apache Spark - 从 groupByKey 结果的 Iterable 创建 RDD

elasticsearch - 使用bool查询进行 Elasticsearch 聚合

elasticsearch - Elasticsearch-用于非日志数据可视化的Kibana

基于节点角色的 Elasticsearch 升级顺序

hadoop - hsync()如何在HDFS中工作?

Hadoop 操作关闭节点

json - Scala通过带有 yarn 的Spark - 缺少大括号字符串

apache-spark - Spark Mllib FP 增长作业因内存错误而失败

apache-spark - 针对基于CSV的Spark DataFrame的查询比基于Parquet的查询快吗?