[英]Is it possible to write to a dynamically created Elasticsearch index with a formatted date using elasticsearch-hadoop/spark?
[英]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.newAPIHadoopFile
和rdd.saveAsHadoopFile
采用hadoop.conf.Configuration
参数。 因此,您可以毫无问题地使用具有相同SparkContext
两个 ES 集群。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.