Hcatalog-show-partitions
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は、テーブルをパーティションに編成します。 これは、日付、都市、部門などのパーティション化された列の値に基づいて、テーブルを関連部分に分割する方法です。 パーティションを使用すると、データの一部を簡単に照会できます。
たとえば、 Tab1 という名前のテーブルには、id、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
パーティションを追加する
テーブルを変更することで、テーブルにパーティションを追加できます。 Id、Name、Salary、Designation、Dept、yojなどのフィールドを持つ employee というテーブルがあると仮定します。
構文
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’);"