假设我使用INSERT OVERWRITE TABLE命令和分区: -
INSERT OVERWRITE TABLE target PARTITION (date_id = ${hiveconf:DateId})
SELECT a as columnA,
b as columnB,
c as columnC from sourcetable;
并且假设目标表中列的顺序与insert overwrite / select中指定的列顺序不同。有关系吗?因为我在理想情况下使用AS子句明确指定列名称,所以无关紧要。但是我得到了一些在目标方面被交换的数据。我强烈怀疑列可能很重要。所以只是想确认一下。
答案 0 :(得分:5)
列的顺序是唯一重要的事情 源和目标之间应该完全吻合。
P.S。
我不知道任何SQL提供程序支持按列匹配目标和源之间的匹配。名。
ISO SQL支持目标表的列列表,例如:
insert into trg (col4, col1, col2)
select ... , ... , ... from ...
Hive目前不支持。