尝试从一个表加载数据到hive的分区表,得到FAILED: SemanticException [Error 10044]: Line 1:18 Cannot insert into target table

cbjzeqam  于 2021-04-12  发布在  Hive
关注(0)|答案(1)|浏览(2471)

所以我有一个20列的表,我创建了另一个分区表--使用2个分区值,现在当我尝试从我的20列表加载数据到其他分区表时,我得到错误信息说我的分区表比我插入数据的表有更多的列。
我的创建表语句。

create table flight_data_parquet(
  YEAR INT,
  FL_DATE STRING,
  UNIQUE_CARRIER STRING,
  AIRLINE_ID INT,
  CARRIER STRING,
  TAIL_NUM STRING,
  FL_NUM INT,
  ORIGIN_AIRPORT_ID INT,
  ORIGIN_AIRPORT_SEQ_ID INT,
  ORIGIN STRING,
  DEST_AIRPORT_ID INT,
  DEST_AIRPORT_SEQ_ID INT,
  DEST STRING,
  DEP_DELAY FLOAT,
  ARR_DELAY FLOAT,
  CANCELLED TINYINT,
  DIVERTED TINYINT,
  DISTANCE INT)
partitioned by (Month INT, DAY_OF_MONTH INT)stored AS PARQUET;

-插入声明。

insert into table flight_data_parquet partition(month=1, day_of_month) 
select  YEAR,FL_DATE,
  UNIQUE_CARRIER,
  AIRLINE_ID,
  CARRIER,
  TAIL_NUM,
  FL_NUM,
  ORIGIN_AIRPORT_ID,
  ORIGIN_AIRPORT_SEQ_ID,
  ORIGIN,
  DEST_AIRPORT_ID,
  DEST_AIRPORT_SEQ_ID,
  DEST,
  DEP_DELAY,
  ARR_DELAY,
  CANCELLED,
  DIVERTED,
  DISTANCE, month, day_of_month
from flight_data_v2 where month=1;

我得到的错误是 -

FAILED: SemanticException [Error 10044]: Line 1:18 Cannot insert into target table because column number/types are different 'day_of_month': Table insclause-0 has 19 columns, but query has 20 columns.
hive (flights)>
lztngnrs

lztngnrs1#

分区规范中的month=1partition(month=1, day_of_month) - 是一个静态分区,并且已经指定了值,从选择查询中删除month,只有day_of_month(动态分区)应该在选择中出现。

insert into table flight_data_parquet partition(month=1, day_of_month)  -- Month=1 is a static partition 
select  YEAR,FL_DATE,
  UNIQUE_CARRIER,
  AIRLINE_ID,
  CARRIER,
  TAIL_NUM,
  FL_NUM,
  ORIGIN_AIRPORT_ID,
  ORIGIN_AIRPORT_SEQ_ID,
  ORIGIN,
  DEST_AIRPORT_ID,
  DEST_AIRPORT_SEQ_ID,
  DEST,
  DEP_DELAY,
  ARR_DELAY,
  CANCELLED,
  DIVERTED,
  DISTANCE, day_of_month
from flight_data_v2 where month=1;

相关问题