ハイブに 2 つのテーブルがあり、どちらもタイムスタンプを表す文字列でパーティション分割されています (タイムスタンプでパーティション分割されたテーブルをサポートしていない Cloudera Impala のテーブルを使用しているため、タイムスタンプの代わりに文字列を使用します)。
テーブルは、特定のタイム スライスに大量のデータを格納するために使用されます。最初のテーブルには、より高い時間粒度で最新のデータが含まれています。たとえば、1 分のタイム スライスであり、2 番目のテーブルには、より低い粒度で、たとえば 1 時間のタイム スライスです。
そのため、1 分のタイム スライスの特定の時間よりも古いデータを合計して、1 時間のタイム スライスのデータを取得し、それを 1 時間のタイム スライスでテーブルに挿入するクエリがあります。
1 時間のタイム スライスを作成した後、新しい 1 時間のタイム スライスに含まれる 1 分のタイム スライスをすべて削除したいと考えています。また、テーブルは時間を表す文字列で分割されているため、対応するパーティションを削除するだけです。
そして、私の実際の質問を知っています:
ハイブでどうにかしてパーティションをドロップすることは可能ですか
ALTER TABLE oneMinSlices DROP IF EXISTS PARTITION(time < 'YYYY-MM-DD HH:MM:SS')
よろしくお願いします。
ps: なぜ私がこれを行っているのか疑問に思っている場合: データは継続的に成長しており、1 分のタイム スライスを削除しないと、それらを含むテーブルが非常に大きくなり、クエリが遅くなり、多くのクエリが必要になります。スペースの。