PySpark 1.5.2 + Elasticsearch 2.1.0 的引入步骤和执行

首先

    pyspark から Elasticsearchを触りたい

环境()

    • Elasticsearch 2.1.0

 

    Spark 1.5.2

安装Spark

我会跳过。今天发布了Spark 1.6版本,但是我会选择1.5.2版本。

下载 Elasticsearch+hadoop。

    2016/1/6時点では、Elasticsearch 2.1.0では、elasticsearch-hadoop-2.2.0-beta1が必要です。

只需从官方网页下载并解压缩即可。

$ wget http://download.elastic.co/hadoop/elasticsearch-hadoop-2.2.0-beta1.zip
$ unzip elasticsearch-hadoop-2.2.0-beta1.zip

使用pyspark + elasticsearch启动

/usr/local/share/spark/bin/pyspark --master local[4] --driver-class-path=elasticsearch-hadoop-2.2.0-beta1/dist/elasticsearch-spark_2.11-2.2.0-beta1.jar

生成RDD

>>> conf = {"es.nodes" : "XXX.XXX.XXX.XXX:[port]", "es.resource" : "[index name]/[type]"}
>>> rdd = sc.newAPIHadoopRDD("org.elasticsearch.hadoop.mr.EsInputFormat","org.apache.hadoop.io.NullWritable", "org.elasticsearch.hadoop.mr.LinkedMapWritable", conf=conf)

基本操作 – 基础操作

>>> rdd.first()
>>> rdd.count()
>>> rdd.filter(lambda s: 'aaa' in s).count()

地图/归纳

# name別にいくつのレコードがあるかカウント
counts = rdd.map(lambda item: item[1]["name"])
counts = counts.map(lambda ip: (ip, 1))
counts = counts.reduceByKey(lambda a, b: a+b)

# 実行
>>> counts.collect()

保存到ES

rdd.saveToEs('test/docs')

迷恋上这个地方

    • Elasticsearch側での、Network設定は注意。network.publish_hostが正しくないと、接続が拒否されました系のエラーが出てはまった。

Remote access about Spark and Elasticsearchが参考になった。

<snip>
File "/usr/local/share/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD.
: org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: [GET] on [_nodes/http] failed; server[hostname/XXX.XXX.XXX.XXX:Ports] returned [400|Bad Request:]
<snip>

请以中文为母语进行改写,请只提供一种选择:

引用

闪耀

    • 楽しい可視化 : elasticsearchとSpark Streamingの出会い

 

    Elasticsearch in Apache Spark with Python—Machine Learning Series, Part 2

Elasticsearch 弹性搜索

    • Apache Spark support

Remote access about Spark and Elasticsearch

AWSのDiscoveryの問題。network.publish_host の設定が重要。

elasticsearch.ymlの設定
Elasticsearch Unplugged – 2.0におけるネットワークの変更(日本語訳)

广告
将在 10 秒后关闭
bannerAds