目录
一、背景
hive insert overwrite table结果发现不会覆盖原文件,而是新增一个文件
本来只有一个文件
insert overwrite table之后变成2个文件了
之后用datax同步该文件路径下数据会翻倍😭
二、解决
不知道怎么解决,为了快速实现功能我尝试了用impala执行,结果因数据量太大,报了行太大超出默认值,可以去看我上一篇博文的解决方案。。。
无奈,用了最简单粗暴的方法。
先drop table 再create table 然后再insert overwrite table最后datax同步。
虽然好傻,但是问题解决了。。。
附带一个官方issues jira:
[HIVE-13997] Insert overwrite directory doesn't overwrite existing files - ASF JIRA
官方答复:
配置单元插入覆盖目录仅覆盖生成文件的直接路径而不是目录。
-rwxrwxrwx 3 myvm 用户 1163 2016-11-24 03:11 /mytest/warehouse/mytable/000000_0
-rwxrwxrwx 3 myvm 用户 0 2016-11-24 03:09 /mytest/warehouse/mytable/000000_1
-rwxrwxrwx 3 myvm 用户 0 2016-11-24 03:09 /mytest/warehouse/mytable/000000_2
-rwxrwxrwx 3 myvm 用户 0 2016-11-24 03:09 /mytest/warehouse/mytable/000000_3
预期的插入覆盖命令会覆盖整个目录,但它只会更新 000000_0 而不会触及路径中的其他文件。
ps:说了跟没说一样。。。