0

次のようなテキスト形式のハイブテーブルがあります。 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;

今、同じフィールドを持つorc形式のテーブルを作成します 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>

4

1 に答える 1

0

ソース テーブルのパーティション キー ( dt) は、通常のフィールドであるかのように結果セットに返されるため、追加の列があります。パーティション キーで値を指定する場合はdt、フィールド リストからフィールドを ( ではなく)除外します。または、値を指定せずに、パーティションの名前として*指定します。dtここの例で CTAS (選択としてテーブルを作成...) を参照してください: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTableAsSelect(CTAS)

于 2016-08-09T03:19:49.320 に答える