2016-11-29 5 views
0

別のテーブルと同じカラムを持つ(分割された)ハイブテーブルを作成しようとしています。私はdestTableがパーティション化されてはならないので、どうやら私は「(COL_NAME)で仕切ら」を使用することはできません同じデータを含まないハイブテーブルにパーティションを追加する

CREATE TABLE destTable STORED AS PARQUET AS select * from srcTable where 1=2; 

ために、次のクエリを使用します。しかし、データを追加する前に、destTableをカラム(srcTableと同じ)で分割する必要があることを言いたいと思います。

これを行う方法はありますか?

+0

これを明確に説明できますか? **明らかに、私は 'PARTITIONED BY(col_name)'を使うことはできません。なぜなら、destTableを分割してはならないからです。しかし、私はdestTableを列で分割する必要があることを言及したいと思います** – mrsrinivas

答えて

0

前述のとおり、destTableはパーティション化されたテーブルではないため、直接行う方法はありません。また、destTableは外部表にすることもできません。

この状況では、データを保持するために一時的な「staging_table」(パーティション化されていないテーブルとHive管理されたテーブル)を作成する必要があります。

ステップ1:パーティションdestTableを作成し、実行します:

INSERT OVERWRITE TABLE destTable PARTITION(xxxx) 
SELECT * FROM staging_table; 

・ホープ、このことができますsrcTableからstaging_tableに

ステップ2にすべてを転送します。

関連する問題