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 отсюда.

Есть идеи?

Заранее спасибо. Максимум

0 ответов

Другие вопросы по тегам