2017-10-19 10 views
0
create table h5_qti_desc 
(h5id string, 
    query string, 
    title string, 
    item string, 
    query_ids string, 
    title_ids string, 
    item_ids string, 
    label bigint 
)PARTITIONED BY (day string) LIFECYCLE 160; 

insert overwrite into h5_qti_desc 
select * from aaa 
; 

私はh5_qti_descという名前のテーブルを作成し、別のaaaテーブルから挿入します。このテーブルには、dayフィールドがあり、aaaにはパーティションがありません。 テーブルaaaには、 '20171010'、 '20171015' ...のような数日があります。
h5_qti_descのパーティションには、1日をパーティションとして挿入し、aaaの日はh5_qti_descのパーティションの日として動作します。元の日をHiveのパーティションとしてテーブルに挿入するにはどうすればよいですか?

答えて

2

Hiveの動的パーティション機能を使用してデータを挿入できます。ダイナミックパーティションインサート(またはマルチパーティションインサート)は、入力テーブルのスキャン中にどのパーティションを作成して入力するかを動的に決定することによって、この問題を解決するように設計されています。以下は

1つのinsert文を使用して、すべてのパーティションにデータをロードするの一例です:

hive>set hive.exec.dynamic.partition.mode=nonstrict; 

hive>INSERT OVERWRITE TABLE h5_qti_desc PARTITION(day) 
      SELECT * FROM aaa 
      DISTRIBUTE day; 
関連する問題