从 orc table 到 avro table 插入覆盖时出错?
Error insert overwrite from orc table to avro table?
我对这类事情很陌生,如果我没有给出足够明确的问题,请多问我
这些是 运行 在 hive
这是 avro table
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 table 向那个 avro table 插入覆盖。
我正在努力实现这样的目标:
INSERT OVERWRITE TABLE cm (a,b) PARTITION (year=p_year)
SELECT a,b,p_year FROM orctable
我认为插入语句如下:
INSERT OVERWRITE TABLE cm PARTITION (year)
SELECT a,b,p_year FROM orctable
使用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-only 作业。 SELECT-clause 将转换为映射器的计划,输出将根据 (year) 对的值分配给 reducer。 INSERT 子句将转换为写入动态分区的减速器中的计划。
我对这类事情很陌生,如果我没有给出足够明确的问题,请多问我
这些是 运行 在 hive
这是 avro table
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 table 向那个 avro table 插入覆盖。 我正在努力实现这样的目标:
INSERT OVERWRITE TABLE cm (a,b) PARTITION (year=p_year)
SELECT a,b,p_year FROM orctable
我认为插入语句如下:
INSERT OVERWRITE TABLE cm PARTITION (year)
SELECT a,b,p_year FROM orctable
使用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-only 作业。 SELECT-clause 将转换为映射器的计划,输出将根据 (year) 对的值分配给 reducer。 INSERT 子句将转换为写入动态分区的减速器中的计划。