2

我有两个独立的 Elasticsearch 集群,我想将数据从第一个集群重新索引到第二个集群,但我发现我只能在 SparkContext 配置中设置一个 Elasticsearch 集群,例如:

var sparkConf : SparkConf = new SparkConf()
                     .setAppName("EsReIndex")
sparkConf.set("es.nodes", "node1.cluster1:9200")

那么如何在同一应用程序内的 Spark 中使用弹性搜索 hadoop 在两个 Elasticsearch 集群之间移动数据?

4

1 回答 1

3

您无需为此在 SparkConf 中配置节点地址。

当您使用带有elasticsearch格式的 DataFrameWriter 时,您可以将节点地址作为选项传递,如下所示:

val df = sqlContext.read
                  .format("elasticsearch")
                  .option("es.nodes", "node1.cluster1:9200")
                  .load("your_index/your_type")

df.write
    .option("es.nodes", "node2.cluster2:9200")
    .save("your_new_index/your_new_type")

这应该适用于 spark 1.6.X 和相应的 elasticsearch-hadoop 连接器。

于 2016-10-29T08:03:26.533 回答