从orc表到avro表插入覆盖时出错?

hzbexzde  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(288)

我是新来的,所以,请多问我一点,以防我没有给出足够的问题
这些是Hive里的
这是avro表

CREATE EXTERNAL TABLE cm 
 PARTITIONED BY (
 `year` STRING
     )
   ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
  STORED as INPUTFORMAT 
 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
 OUTPUTFORMAT 
 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
  LOCATION 's3://blabla/cm' 
 TBLPROPERTIES (
     'avro.schema.url'='s3://blabla/cm')

我正试着从orc表格中插入OVERVITE到avro表格中。我正在努力实现这样的目标:

INSERT OVERWRITE TABLE cm (a,b) PARTITION (year=p_year)
SELECT a,b,p_year FROM orctable
rkkpypqq

rkkpypqq1#

我认为insert语句如下:

INSERT OVERWRITE TABLE cm PARTITION (year)
SELECT a,b,p_year FROM orctable
ncecgwcz

ncecgwcz2#

使用 DISTRIBUTE BY 添加动态分区。使用 DISTRIBUTE BY 您的查询应如下所示:

set hive.exec.dynamic.partition.mode=nonstrict;
insert into table table_name partition(year)
select a, b, p_year from orc_table DISTRIBUTE BY p_year;

此查询将生成mapreduce作业,而不是仅Map作业。select子句将转换为Map器的计划,输出将根据(年)对的值分配给还原器。insert子句将转换为reducer中写入动态分区的计划。

相关问题