Pyspark es.query 仅在默认情况下有效

Posted

技术标签:

【中文标题】Pyspark es.query 仅在默认情况下有效【英文标题】:Pyspark es.query only works when default 【发布时间】: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 之外的一切都保持不变。 【参考方案1】:

默认情况下,API 在您的实际查询前添加“查询”:。 对于弹性搜索,您发送的查询将如下所示

"query" :
"match" : "key" : "value"

这是无效的。

【讨论】:

以上是关于Pyspark es.query 仅在默认情况下有效的主要内容,如果未能解决你的问题,请参考以下文章

Dataproc Pyspark 作业仅在一个节点上运行

Pyspark:如何仅在具有 NotNull 值的行上应用 UDF

Pyspark UDF 广播变量未定义仅在由单独脚本导入时

Spark(pyspark)如何仅在3元素元组的2个元素上reduceByKey

我希望我的 iframe 弹出窗口仅在单击图像/链接时才可见,而不是默认情况下

使用 JavaScript 更改 Highcharts 的高度。默认情况下,仅在窗口重新调整大小时重新调整大小