2016-05-31 15 views
0

2つの外部Hive ORCテーブルがあるとします。どちらも同じデータ型、同じパーティション、同じバケットを持つ同じスキーマを持ちます。ソースの場所を変更した後のHive ORCテーブルの復元?

テーブルAを削除し、テーブルBの場所をテーブルAのソースの場所に設定しようとしています。私は両方を試してみた:

alter tableB set location "hdfs://.../tableA" 

msck repair table B 

を運なし。

+1

パーティションの場所も設定しようとしましたか? – leftjoin

+0

@leftjoinによって生成されたポイントを強調するために、パーティションテーブルの場合、テーブルレベルの "location"は、将来のパーティション**のための**デフォルトルートディレクトリにすぎません**。既存のパーティションには、メタストアデータベースに登録された独自の「場所」があります。それらをすべて1つずつ変更する必要があります。 –

+0

または、*(1)*テーブルB *(2)からのすべてのパーティションを削除する*テーブルB *(3)*の "location"を変更して、MSCK修復を実行してサブディレクトリを自動検出してみてください。その順序で。 –

答えて

0

ファイルを削除すると外部テーブルなので、ファイルはそのまま残ります。だから、テーブルAとテーブルBを落とすだけです。次に、テーブルAのファイルの場所を使用してテーブルbを再作成します。

drop tableA; 
drop tableB; 
create external table if not exists tableB (
....your existing DDL 
) 
location 'tableA path'; 
関連する問題