【发布时间】:2017-09-13 20:34:43
【问题描述】:
在 pypspark 中,我可以从 ES 返回数据的唯一方法是将 es.query 保留为默认值。这是为什么呢?
es_query = {"match" : {"key" : "value"}}
es_conf = {"es.nodes" : "localhost", "es.resource" : "index/type", "es.query" : json.dumps(es_query)}
rdd = sc.newAPIHadoopRDD(inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",keyClass="org.apache.hadoop.io.NullWritable",valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable", conf=es_conf)
...
rdd.count()
0
rdd.first()
ValueError: RDD is empty
但这个查询(默认)似乎有效
es_query = {"match_all" : {}}
...
rdd.first()
(u'2017-01-01 23:59:59)
*我已经通过直接查询弹性搜索测试了查询,它们可以正常工作,所以 spark/es-hadoop 有问题。
【问题讨论】:
-
Juist 确认一下,您在查询定义和
rdd.first()调用之间使用了相同的命令,对吗? -
是的,除了 es_query 之外的一切都保持不变。
标签: hadoop apache-spark elasticsearch pyspark