我有2张桌子,如下所示。

CREATE EXTERNAL TABLE IF NOT EXISTS TEMP_tab(id int,mytime STRING,age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'hdfs://xxx';

CREATE TABLE IF NOT EXISTS main_TAB(id int,age int)
PARTITIONED BY (mytime STRING)
STORED AS ORC
tblproperties ("orc.compress"="ZLIB");

FROM TEMP_TAB INSERT OVERWRITE TABLE main_TAB
PARTITION (mytime)
SELECT *,substr(mytime,0,10) as mytime;

但奇怪的是插入无法正常工作。它具有以下错误消息



我已经设置了这两个
SET hive.exec.dynamic.partition = true
SET hive.exec.dynamic.partition.mode = nonstrict

最佳答案

现在,所有错别字都已解决,现在可以更轻松地查看自己在做什么。

最后一行,您选择了mytime两次。我不确定为什么错误不会认为您有4列,但是无论如何,请不要使用*,因为您具有与源表中的列同名的分区列。

SELECT id, age, substr(mytime,0,10) as mytime;

当插入分区表时,我注意到分区列总是需要最后选择

关于hadoop - Hive动态分区问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47123329/

10-12 23:44