我有一个配置单元表详细信息与下面的模式
name STRING,
address STRING,
dob DATE
我的出生日期以yyyy-mm-dd格式存储,如1988-01-27。
我正在尝试加载这个ElasticSearch表。因此,我按照下面的指示在色调。
CREATE EXTERNAL TABLE sampletable (name STRING, address STRING, dob DATE)
ROW FORMAT SERDE 'org.elasticsearch.hadoop.hive.EsSerDe'
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.resource' = 'test4/test4','es.nodes' = 'x.x.x.x:9200');
INSERT OVERWRITE TABLE sampletable SELECT * FROM details;
select * from sample table;
但dob字段显示所有列为空。但是我可以验证我的原始配置单元表在日期字段中是否有数据。
经过一些研究,我发现elasticsearch期望数据字段是yyyy-mm-ddthh:mm:zz因为我的数据不匹配,所以抛出错误。它还提到,我可以将格式更改为“strict\u date”格式,这样就可以很好地处理我的配置单元日期格式。但我不确定在配置单元查询中的何处执行我需要满足此条件。
有人能帮我吗?
1条答案
按热度按时间vx6bjr1n1#
date
Map到配置单元的类型有一些问题。你可以用Hivestring
类型Mapesdate
类型,但必须为参数设置配置单元表的配置:es.mapping.date.rich
,设置其值为false。像这样的'es.mapping.date.rich'='false',在create table语句中,它是:参考链接:Map和类型