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

标签 hadoop hive hiveql avro overwrite

我对这类事情很陌生,如果我没有给出足够明确的问题,请多问我

这些在配置单元中运行

这是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 表向那个 avro 表插入覆盖。 我正在努力实现这样的目标:

INSERT OVERWRITE TABLE cm (a,b) PARTITION (year=p_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 子句将转换为映射器的计划,输出将根据 (year) 对的值分配给 reducer。 INSERT 子句将转换为写入动态分区的 reducer 中的计划。

关于hadoop - 从 orc 表插入覆盖到 avro 表时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887052/

相关文章:

java - Hadoop - 类型不匹配 : cannot convert from List<Text> to List<String>

sql - 逻辑运算符不在括号之外返回令人困惑的结果

ruby - Amazon EMR 的 ruby​​ 流脚本中需要外部库

maven - 创建用于提交Spark应用程序的瘦 jar

xpath - 在 Hive 中爆破一行 XML 数据

oracle - 是否可以将配置单元表与 oracle 表连接起来?

string - 使用 Hortonworks hadoop hive 聚合字符串

hadoop - Hive中的数据(单引号和双引号)不匹配

java - Hadoop MapReduce 计数并显示最大值

hadoop - Hive 列从 decimal 转换为 double 导致 NULL