项目中遇到ES中的时间格式导入HIVE中,出现异常。
今天晚上有空研究了一下Elasticsearch-hadoop 源码,发现HiveValueReader用的是下面这个方法在解析时间字符串
DatatypeConverter.parseDateTime(value)
没有用到ES中我们指定的时间格式。
curl -XPUT 'localhost:9200/myindex?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
"myindex": {
"_all": { "enabled": false },
"properties": {
"id": {
"type": "keyword"
},
"created": {
"type": "date",
"format": "yyyyMMddHHmmssSSS||epoch_millis"
}
}
}
}
}
'
解决方法:
在HIVE中指定时间格式,并自定义自己的reader. 这里的时间格式是自定义个属性。