2017-02-04 54 views
1

在spark-shell中,我成功地使用了elasticsearch-hadoop連接器(特別是針對spark:elasticsearch-spark-20_2.11-5.1.2開發的連接器)。罐)。調用火花:SparkContext對象沒有屬性esRDD(elasticsearch-spark連接器)

] $SPARK_HOME/bin/spark-shell --master local[2] --jars ~/spark/jars/elasticsearch-spark-20_2.11-5.1.2.jar 

在斯卡拉殼:

scala> import org.elasticsearch.spark._ 
scala> val es_rdd = sc.esRDD("myindex/mytype",query="myquery") 

它完美的作品。我想和pyspark一樣。我想:

] $SPARK_HOME/bin/pyspark --master local[2] --driver-class-path=/home/pat/spark/jars/elasticsearch-spark-20_2.11-5.1.2.jar 

但在Python Shell中,調用esRDD方法是不可能的:

>>> sc.esRDD 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    AttributeError: 'SparkContext' object has no attribute 'esRDD' 

罐子庫加載,因爲此調用工作:

>>> conf = {"es.resource" : "myindex/mytype", "es.nodes" : "localhost"} 
>>> rdd = sc.newAPIHadoopRDD("org.elasticsearch.hadoop.mr.EsInputFormat","org.apache.hadoop.io.NullWritable","org.elasticsearch.hadoop.mr.LinkedMapWritable", conf=conf) 

是否有人知道如何在pyspark中使用esRDD()?

回答

1

esRDD實際上不存在pyspark

因此它只會在火花工作,你需要輸入以下內容:

import org.apache.spark.SparkContext._ 

import org.elasticsearch.spark._ 

現在你可以讀取數據:

val rdd = sc.esRDD("index_name/doc_type") 
+0

任何在這些進口的結果:導入錯誤:沒有模塊名爲...請注意,我在python shell中,而不是在scala one(參考你的val rdd命令) – Patrick

+0

在pyspark中,我導入上下文:from pyspark import SparkConf,SparkContext – Patrick

+0

哦,對不起考慮你還有兩個問題,我以爲你在工作python。讓我解決這個 – eliasah

相關問題