将数据从一个表复制到另一分区表

%hive
INSERT INTO NEWPARTITIONING partition(year(L_SHIPDATE)) select * from LINEITEM;

我想将订单项中的数据复制到分区表NEWPARTITIONING,但出现以下错误:

1:54行无法识别语句中')''select''*'附近的输入。

不明白为什么会发生此错误。谁能给我一些想法

sjm8974 回答:将数据从一个表复制到另一分区表

Hive支持动态静态分区加载。

分区规范仅允许使用列名或列列表(用于动态分区加载),如果需要功能,请在选择中进行计算,请参见以下示例:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

insert into table NEWPARTITIONING partition (partition_column)
select i.col1,...
       i.colN,year(L_SHIPDATE) as partition_column --Partition should be the last in column list
  from LINEITEM i 

或者您可以以partition(partition_column='value')的形式指定静态分区,在这种情况下,您无需选择分区表达式:

insert into table NEWPARTITIONING partition (partition_column='2020-01-01')
select i.col1,...
       i.colN
  from LINEITEM i 
 where year(L_SHIPDATE)  = '2020-01-01' 

在STATIC和DYNAMIC两种情况下,Hive不支持分区规范中的功能。函数可以在查询中计算(动态负载),也可以在包装器外壳中计算,然后作为参数传递给脚本(用于静态分区)。

本文链接:https://www.f2er.com/1466224.html

大家都在问