这个问题在这里已经有答案了:
hive动态分区(2个答案)
10个月前关门了。
我有一个没有任何分区的hive temp表,其中包含所需的数据。我想选择此数据并插入到另一个按日期分区的表中。我尝试了以下技巧,但运气不好。
源表架构
CREATE TABLE cls_staging.cls_billing_address_em_tmp
( col1 string,
col2 string,
col3 string);
目标表:
CREATE TABLE cls_staging.cls_billing_address_em_tmp
( col1 string,
col2 string,
col3 string)
PARTITIONED BY (
curr_date string)
STORED AS ORC;
插入目标表的查询:
insert overwrite table cls_staging.cls_billing_address_em_tmp partition (record_date) select col1, col2, col3, FROM_UNIXTIME(UNIX_TIMESTAMP()) from myDB.mytbl;
错误
Dynamic partition strict mode requires at least one static partition column
第二
insert overwrite table cls_staging.cls_billing_address_em_tmp partition (record_date = FROM_UNIXTIME(UNIX_TIMESTAMP())) select col1, col2, col3 from myDB.mytbl;
错误:
cannot recognize input near 'FROM_UNIXTIME' '(' 'UNIX_TIMESTAMP'
1条答案
按热度按时间qni6mghb1#
第一次打开动态分区和非严格模式:
第二:不要使用
unix_timestamp()
为此,因为它将生成许多不同的时间戳,所以使用current_timestamp
常数,读这个:https://stackoverflow.com/a/58081191/2700344