2016-09-23 4 views
0

私は毎日のパーティションの日賢明、(だけでなく、将来の日付のパーティションが含まれます)、以下のようなものは動的

20160901 
20160902 
........ 
........ 
........ 
20160931 
20161001 
20161002 

私は1つの日付を渡したい例えば言う昨日の日付20160922とHIVEテーブルを持っているハイブパーティションを削除し、 > 20160922以上のすべてのパーティションを動的に削除したい(今日は20160923だが、20160922の日付から削除したい)。

どのようにこれらのパーティションを動的に削除できますか。

答えて

0

ダイナミックSQLをサポートしていないため、ハイブで直接行うことはできません。

シェルスクリプト/以下のようなドロップパーティションスクリプトを持つスクリプト作成ファイルを使用することで回避できます。

alter table partition_t存在するパーティションが存在する場合は削除します(y = 20160922)。

alter table partition_t存在するパーティションが存在する場合は削除します(y = 20160921)。

alter table partition_t存在するパーティションが存在する場合は削除します(y = 20160920)。その後、 ...

へのデータの表は、以下の手順を実行して挿入する前に、パーティション

0

が存在する場合はハイブ-v -f ./file.sh

ALTER TABLEのpartition_tドロップを実行します。

1)このテーブルのHdfsフォルダに移動して、すべてのフォルダを削除します。 シェルコマンドを使用したテーブルディレクトリ。 HadoopのFS -rm R <>

2)パーティションに関するメタデータを更新するためにMSCK修復表を実行します。

上記の2つの手順を実行すると、パターンに基づいて使用可能なパーティションがすべて削除されます。

今すぐ新しいデータを挿入してください。