我有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/