elasticsearch 将Elasticsearch嵌套对象映射到配置单元表列,elasticsearch,hive,elasticsearch,Hive" /> elasticsearch 将Elasticsearch嵌套对象映射到配置单元表列,elasticsearch,hive,elasticsearch,Hive" />

elasticsearch 将Elasticsearch嵌套对象映射到配置单元表列

elasticsearch 将Elasticsearch嵌套对象映射到配置单元表列,elasticsearch,hive,elasticsearch,Hive,我试图通过创建外部表将数据从弹性搜索拉到配置单元。到目前为止,我能够使用点表示法将列映射到嵌套属性。 例如hivecolname:escolname->emp_id:employees.employee1.id 但是,我现在有以下结构:- "encounters": [ { "id": 241, "admitDate": "2014-12-01T08:04:00Z" },

我试图通过创建外部表将数据从弹性搜索拉到配置单元。到目前为止,我能够使用点表示法将列映射到嵌套属性。 例如hivecolname:escolname->emp_id:employees.employee1.id

但是,我现在有以下结构:-

    "encounters": [
            {
              "id": 241,
              "admitDate": "2014-12-01T08:04:00Z"
            },
            {
                 "id": 2411,
                 "admitDate": "2014-10-01T08:04:00Z"
              }
           ]
这意味着属性可以有任意数量的元素。我正在使用以下查询在配置单元中创建外部表:-

CREATE EXTERNAL TABLE tableName(encounters array<struct<admitDate:string, id:bigint>>) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.resource' = 'ads/dReg', 'es.nodes' = 'localhost','es.port' = '9200','es.query' = '?q=*', 'es.mapping.names' = 'encounters:encounters');

admitDate有问题;给定格式,ES会将其保存为日期时间,而您在配置单元中将其定义为字符串;如果您在配置单元中将其重新定义为时间戳,或者在ES中将其映射为字符串,那么一切都应该解决

java.lang.ClassCastException: org.elasticsearch.hadoop.mr.LinkedMapWritable cannot be cast to org.apache.hadoop.io.ArrayWritable