pysparkを使用してAmazonのEMRクラスターでコードを実行しています。その後、方法は私が作っそれ以下の手順に従ってた作品:
1)ローカルホストelasticsearchサーバーを作成する(クラスタ作成中、このブートストラップアクションを入れて):
s3://awssupportdatasvcs.com/bootstrap-actions/elasticsearch/elasticsearch_install.4.0.0.rb
2)私は埋めるためにこれらのコマンドを実行しますいくつかのデータとelasticsearchデータベース:
curl -XPUT "http://localhost:9200/movies/movie/1" -d' {
"title": "The Godfather",
"director": "Francis Ford Coppola",
"year": 1972
}'
ご希望の場合も同様に、他のカールのコマンドを実行できます。
curl -XGET http://localhost:9200/_search?pretty=true&q={'matchAll':{''}}
3)私は、次のパラメータを使用してpysparkをinited:
pyspark --driver-memory 5G --executor-memory 10G --executor-cores 2 --jars=elasticsearch-hadoop-5.5.1.jar
私は以前
4 elasticsearchのPythonクライアントをダウンロードしていた)私は、次のコードを実行します。
from pyspark import SparkConf
from pyspark.sql import SQLContext
q ="""{
"query": {
"match_all": {}
}
}"""
es_read_conf = {
"es.nodes" : "localhost",
"es.port" : "9200",
"es.resource" : "movies/movie",
"es.query" : q
}
es_rdd = sc.newAPIHadoopRDD(
inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",
keyClass="org.apache.hadoop.io.NullWritable",
valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable",
conf=es_read_conf)
sqlContext.createDataFrame(es_rdd).collect()
その後、私は最終的に得ました成功したコマンドの結果。
これは私が今行ってきたことですが、フィルタリングされたDataFrameを直接フェッチする方法があることを願っていました。 –
ES-Hadoop Sparkコネクタの最新APIでは可能かどうかはわかりません。 –
このAPIを使用してelasticsearchにデータフレームを書き込む方法はありますか? –