2

2つの別々のElasticsearchクラスターがあり、最初のクラスターのデータを2番目のクラスターに再インデクシングしたいのですが、などSparkContext構成内部Elasticsearchクラスタ、:1つのElasticsearchクラスターのデータを別のクラスターに再インデックスする方法

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

は、どのように私は、同じアプリケーションの内部スパーク弾性検索にHadoopを持つ2つのElasticsearchクラスタ間でデータを移動することができますか?

答えて

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") 

これはスパーク1.6.xのと、対応するelasticsearch-Hadoopのコネクタで動作するはずです。