![](/img/trans.png)
[英]Exception raised with simple esRDD (elasticsearch-hadoop connector used in Spark)
[英]SparkContext object has no attribute esRDD (elasticsearch-spark connector)
在 spark-shell 中,我成功地使用了 elasticsearch-hadoop 连接器(特别是为 spark 开发的连接器:elasticsearch-spark-20_2.11-5.1.2.jar)。 调用火花:
] $SPARK_HOME/bin/spark-shell --master local[2] --jars ~/spark/jars/elasticsearch-spark-20_2.11-5.1.2.jar
在 Scala 外壳中:
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'
jar 库已加载,因为此调用有效:
>>> 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() 吗?
esRDD
不存在pyspark
实际。
因此它只能在 spark scala 中工作,您需要导入以下内容:
import org.apache.spark.SparkContext._
import org.elasticsearch.spark._
现在您可以读取数据:
val rdd = sc.esRDD("index_name/doc_type")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.