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