Hive-partitioning

提供:Dev Guides
移動先:案内検索

Hive-パーティショニング

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

テーブルまたはパーティションは*バケット*に細分され、より効率的なクエリに使用できるデータに追加の構造を提供します。 バケットは、テーブルの列のハッシュ関数の値に基づいて機能します。

たとえば、 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, ...)

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

hive> ALTER TABLE employee
> ADD PARTITION (year=’2012’)
> location '/2012/part2012';

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

このコマンドの構文は次のとおりです。

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

パーティションの名前を変更するには、次のクエリを使用します。

hive> ALTER TABLE employee PARTITION (year=’1203’)
   > RENAME TO PARTITION (Yoj=’1203’);

パーティションの削除

パーティションを削除するには、次の構文を使用します。

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...;

パーティションを削除するには、次のクエリを使用します。

hive> ALTER TABLE employee DROP [IF EXISTS]
   > PARTITION (year=’1203’);