繁体   English   中英

SparkContext 对象没有属性 esRDD(elasticsearch-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM