Hive の静的パーティショニングと動的パーティショニング (メモ)

目次

序文:

静的パーティション:

 1. パーティションを作成する

2. パーティションの削除

3. パーティションにデータを挿入します

4. パーティションテーブルデータの表示

動的パーティショニング:

2. v テーブルのソース データを表示する

3. 従業員テーブルに抽出する動的フィールド データとして emp_name を使用します。

要約する


序文:

Hive におけるパーティショニングとは、ビジネス ニーズに応じて大きなテーブルのデータを複数のディレクトリに格納することであり、各ディレクトリはテーブルのパーティションと呼ばれます。クエリを実行する場合、where 句の式を使用してクエリに必要なパーティションを選択すると、クエリの効率が大幅に向上し、データのクエリをより速く実行できるようになります。

パーティションには静的パーティションと動的パーティションがあります

静的パーティション:

静的パーティション:テーブルの作成後に作成され、パーティション キーの値を手動で指定できます (値を直接指定します)静的パーティション分割は通常、データ量が比較的固定されており、パーティション情報が頻繁に変更されないシナリオで使用されます。テーブルを作成するときは、partitioned by ステートメントを使用してパーティション キーを指定できます。例は次のとおりです。

CREATE TABLE employee (
  emp_id INT,
  emp_name STRING,
  emp_date STRING,
  emp_salary FLOAT
)
PARTITIONED BY (emp_dept STRING);

 データを作成して挿入します。

 

 1. パーティションを作成する

alter table 従業員追加パーティション(emp_dept='20230920');

alter table 従業員追加パーティション(emp_dept='20230910');

alter table 従業員追加パーティション(emp_dept='20230912');

alter table 従業員追加パーティション(emp_dept='20230917');

 

2. パーティションの削除

alter table 従業員ドロップパーティション (emp_dept='20230910');

alter table 従業員ドロップパーティション (emp_dept='20230920');

alter table 従業員ドロップパーティション (emp_dept='20230914');

3. パーティションにデータを挿入します

他のテーブルからデータを挿入し、間隔を定義する

gh_test.employee パーティションに挿入 (emp_dept='20230914') select * from v where emp_date='2023-09-14'

4. パーティションテーブルデータの表示

select * from gh_test.employee where emp_dept='20230914' 

 


動的パーティショニング:

動的パーティショニング:

これは、パーティションのフィールド値がクエリ結果に基づいて自動的に推測され (パーティションに直接値が与えられるわけではありません)、挿入には Insert Select ステートメントが使用されることを意味します。

動的パーティショニングは通常、データ量が多く、データのインポートに応じてパーティション情報を変更する必要があるシナリオで使用されます。データを挿入するときに、

まず動的パーティショニングを有効にします。

# 表示开启动态分区
set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nostrict;

2. v テーブルのソース データを表示する

3. 従業員テーブルに抽出する動的フィールド データとして emp_name を使用します。

insert overwrite table gh_test.employee
partition (emp_dept)        //先声明不定义值
select v1.*,v1.emp_name from v as v1  //v1.emp_name 为分区值(可以理解为以这个emp_name字段进行了分区)

4. パーティション結果の表示

show partition gh_test.employee

要約する

静的パーティショニングと動的パーティショニングにはそれぞれ利点と欠点があり、実際の状況に応じて選択する必要があります。静的パーティショニングではクエリの効率が向上しますが、パーティション情報を手動で保守する必要があります。動的パーティショニングではパーティション情報を自動的に保守できますが、大量のデータのインポートに時間がかかる可能性があります。

Guess you like

Origin blog.csdn.net/m0_69097184/article/details/132901406