【问题标题】:How to Copy TEXT format partitioned table to ORC format Table in Hive如何在 Hive 中将 TEXT 格式的分区表复制为 ORC 格式的表
【发布时间】:2016-08-09 11:19:49
【问题描述】:

我有一个文本格式配置单元表,例如: CREATE EXTERNAL TABLE op_log ( time string, debug string,app_id string,app_version string, ...more fields) PARTITIONED BY (dt string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;

现在我创建一个具有相同字段的兽人格式表,例如 CREATE TABLE op_log_orc ( time string, debug string,app_id string,app_version string, ...more fields) PARTITIONED BY (dt string) STORED AS ORC tblproperties ("orc.compress" = "SNAPPY");

当我从op_log 复制到op_log_orc 时,我得到了这个错误:

hive> insert into op_log_orc PARTITION(dt='2016-08-09') select * from op_log where dt='2016-08-09'; FAILED: SemanticException [Error 10044]: Line 1:12 Cannot insert into target table because column number/types are different ''2016-08-09'': Table insclause-0 has 62 columns, but query has 63 columns. hive>

【问题讨论】:

    标签: hadoop hive orc


    【解决方案1】:

    源表中的分区键 (dt) 在结果集中返回,就好像它是一个常规字段一样,因此您有额外的列。如果您要在分区键中指定其值,请从字段列表中排除 dt 字段(而不是 *)。或者,只需指定dt 作为分区的名称,而不提供值。请参阅此处示例中的 CTAS(将表创建为选择...):https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTableAsSelect(CTAS)

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 2020-10-03
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 2020-07-09
      • 2015-09-13
      相关资源
      最近更新 更多