HCatalog-パーティションを表示

パーティションは、個別のテーブルまたはビューを作成するために使用される表形式のデータの条件です。SHOW PARTITIONSは、特定のベーステーブルの既存のすべてのパーティションを一覧表示します。パーティションはアルファベット順にリストされています。Hive 0.6以降では、パーティション仕様の一部を指定して、結果のリストをフィルタリングすることもできます。

SHOW PARTITIONSコマンドを使用して、特定のテーブルに存在するパーティションを確認できます。この章では、HCatalogで特定のテーブルのパーティションを一覧表示する方法について説明します。

パーティションステートメントの表示

構文は次のとおりです-

SHOW PARTITIONS table_name;

次のクエリは、という名前のテーブルを削除します employee

./hcat –e "Show partitions employee;"

クエリが正常に実行されると、次の応答が表示されます-

OK
Designation = IT
Time taken: 5.3 seconds

動的パーティション

HCatalogは、テーブルをパーティションに編成します。これは、日付、都市、部門などの分割された列の値に基づいて、テーブルを関連する部分に分割する方法です。パーティションを使用すると、データの一部を簡単にクエリできます。

たとえば、 Tab1id、name、dept、yoj(つまり、参加した年)などの従業員データが含まれます。2012年に参加したすべての従業員の詳細を取得する必要があるとします。クエリは、テーブル全体で必要な情報を検索します。ただし、従業員データを年で分割して別のファイルに保存すると、クエリの処理時間が短縮されます。次の例は、ファイルとそのデータをパーティション分割する方法を示しています-

次のファイルには次のものが含まれています employeedata テーブル。

/ tab1 / employeedata / file1

id, name,   dept, yoj
1,  gopal,   TP, 2012
2,  kiran,   HR, 2012
3,  kaleel,  SC, 2013
4, Prasanth, SC, 2013

上記のデータは、年を使用して2つのファイルに分割されます。

/ tab1 / employeedata / 2012 / file2

1, gopal, TP, 2012
2, kiran, HR, 2012

/ tab1 / employeedata / 2013 / file3

3, kaleel,   SC, 2013
4, Prasanth, SC, 2013

パーティションの追加

テーブルを変更することで、テーブルにパーティションを追加できます。と呼ばれるテーブルがあるとしましょうemployee Id、Name、Salary、Designation、Dept、yojなどのフィールドがあります。

構文

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...;
partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)

次のクエリは、パーティションをに追加するために使用されます employee テーブル。

./hcat –e "ALTER TABLE employee ADD PARTITION (year = '2013') location '/2012/part2012';"

パーティションの名前を変更する

RENAME-TOコマンドを使用して、パーティションの名前を変更できます。その構文は次のとおりです-

./hact –e "ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;"

次のクエリは、パーティションの名前を変更するために使用されます-

./hcat –e "ALTER TABLE employee PARTITION (year=’1203’) RENAME TO PARTITION (Yoj='1203');"

パーティションの削除

パーティションを削除するために使用されるコマンドの構文は次のとおりです。

./hcat –e "ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec,.
   PARTITION partition_spec,...;"

次のクエリは、パーティションを削除するために使用されます-

./hcat –e "ALTER TABLE employee DROP [IF EXISTS] PARTITION (year=’1203’);"