关于Hive插入数据时的字段顺序问题思考

日月星辰 发布在Programming
image

原始的SQL是INSERT xx OVERWRITE SELECT * FROM x,从上面执行时的log看出字段与DDL里定义的没有对齐,由于SQL里SELECT时没有与DDL里的对齐,查文档得知,INSERT时字段的顺序必须与DDL的顺序相同,数量相同。

要求字段数量相同这个可以理解,要求字段顺序与DDL相同这一条,从Hive底层存储也是文件来看,倒也合理。但是从用户体验上来说,真得是不太理解。在INSERT的时候能否根据表的DDL来自动调整下SELECT的顺序呢。

根据DDL的信息:

该优化可以减轻写SQL的负担,对于一个有几十个字段的表,靠人来保证顺序还是比较低效的。