2017-04-20 3 views
0

年、月、日でパーティション化された外部テーブルがハイブにあります。だから私は1つのパーティションを落としましたが、私はまだショーパーティションでそれを見ます。パーティションが外部テーブルのためにドロップされても、ハイブで表示されています

>use test_raw_tables; 
>show partitions test1_raw; 
[year=2016/month=01/day=01] 
[year=2017/month=03/day=24] 

> alter table test1_raw drop partition (year=2016, month=01, day=01); 
> refresh test1_raw; 
> show partitions test1_raw; 
[year=2016/month=01/day=01] 
[year=2017/month=03/day=24]  ---Still see the dropped partition here---- 

> msck repair table test1_raw; 
> show partitions test1_raw; 
[year=2016/month=01/day=01] 
[year=2017/month=03/day=24] ---Still see the dropped partition here---- 

エンジンとしてハイブを搭載したimpalaから実行しています。

はtest1_raw COL_NAME、DATA_TYPE、コメント( 'amount_hold'、 'INT'、 '')( 'ID'、 'INT'、 '')( 'TRANSACTION_ID'、 '文字列'、 '')を説明します( '年'、 '文字列'、 '')( '月'、 '文字列'、 '')( '日'、 '文字列'、 '')( ' '、' None '、' None ')('#パーティション情報 '、None、None)('#col_name '、' data_type '、' comment ' )( '月'、 '文字列'、 '')( '日'、 '文字列'、 '') 場所 'HDFS:// localhostの/ SYS/datalake /テスト/ test1_raw'

は何ですかここの問題? hdfsのデータは、そのパーティションを削除した後に削除されます。問題を理解できません。

+0

** **テーブルの定義**(2)**をコードの実行場所から追加してください。インパラ - シェル?ハイブ?ビーライン? –

+0

@DuduMarkovitzテーブルは外部テーブルです。 hiveシェルからクエリを実行しています。 –

+0

'refresh'はImpalaコマンドであり、ハイブではありません。関連するパーティション定義を含め、テーブル定義だけでなく、どこから実行しているのかを知る必要があります。ファイルシステムでパスがどのように見えるかを教えてください。 –

答えて

0

テーブルの定義カラムの年、月、日は文字列形式です。 Plsは '2016'、 '01'、 '01'で試してみます。 以下のコードを使用しています。

alter table test1_raw drop partition (year='2016', month='01', day='01'); 
+0

に追加してください –

関連する問題