ES-Hadoop запрос странно ведет себя на Pyspark
Поэтому я попытался собрать данные из Elasticsearch в PySpark, используя API-интерфейс asticsearch-hadoop. Цель состоит в том, чтобы преобразовать эти данные в DataFrame Spark.
DataFrame работает со схемой. При создании DF Spark выведет схему на основе первой строки. Но следующие строки не обязательно имеют одинаковую структуру.
Я хочу сделать мой запрос ES таким образом, чтобы возвращаемые документы имели одинаковую структуру: это исключение source_filtering.
Теперь, когда я запускаю это, возвращаемый rdd имеет много полей, но не те, которые я настроил в "_source".
q1 = """{
"_source": {
"includes" : ["field1", "field2"],
"excludes" : ["field3"]
},
"query":{
"bool":{
"must":[
{
"query_string": {
"query": "_type:MyTye AND Folder:MyFolder",
"analyze_wildcard": true
}
}
,
{
"range":{
"FeederTimeStamp":{
"gte":someGreatNumber1,
"lte":someGreatNumber2,
"format":"epoch_millis"
}
}
}
]
}}
}"""
conf={
"es.nodes" : "url:port",
"es.resource" : "MyIndex",
"es.net.http.auth.user": "login",
"es.net.http.auth.pass": "pass",
"es.nodes.client.only" : "true",
"es.query" : q1}
es_rdd = sc.newAPIHadoopRDD(
inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",
keyClass="org.apache.hadoop.io.NullWritable",
valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable",
conf = conf)
Возвращенный es_rdd содержит документы Elastic, но не заботится о фильтре "_source", поэтому я не могу создать согласованный DataFrame отсюда.
Есть идеи?
Заранее спасибо. Максимум