有没有办法在将数据从HIVE移动到ES时跳过ES中的行插入?

时间:2016-06-19 17:32:02

标签: hadoop elasticsearch hive

我正在尝试使用此查询将数据(超过3亿行)从hive表复制到Elasticsearch: - insert overwrite table TableNameES select * from HiveTableName;

&安培;插入一些行后我得到这个例外。我知道这是因为ES中的映射数据类型不同 ...

  

引起:org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest:发现不可恢复的错误[xx.xx.xx.xx:9200]返回Bad Request(400) - [MapperParsingException [无法解析[pctblack.pctblack_raw]]; nested:NumberFormatException [对于输入字符串:“(S)”]; ]。纾困.. **

我想跳过插入错误的行,不仅此异常可能是其他异常。

1 个答案:

答案 0 :(得分:0)

用一些数字替换“(S)”字符串。

insert overwrite table TableNameES select regexp_replace(regexp_replace(json_data,'"_id"','"id"'),'"\(S\)"','"0.0"') from HiveTableName; 

但这不是一个合适的解决方案。