ハイブチュートリアル(4つ) - パーティションテーブルとパーティションテーブルバレル

パーティションテーブルのハイブでは、サブバケットリストはそれほど一般的で、このスピーカーのパーティションテーブルではないかもしれないが、非常に一般的です。

 

コンセプト

パーティションテーブル

ハイブでは、テーブルを分割することができ、各ゾーンは、実際にファイルフォルダHDFSに対応するハイブ表です。

あなたは、マルチレイヤを経由して、フォルダを作成することができる多層パーティション

データは、クリップファイルで分離されています

 

サブバレルテーブル

HDFSの各バケット上のファイルに対応する部品表のキット。

データファイルを分離することにより、

 

パーティション(サブバレル)を指定することができる場所で照会すると、クエリの効率を向上させます

 

パーティションテーブルの基本的な操作

1.パーティションテーブルを作成します。

指定されたパーティション、パーティションのフィールドタイプフィールドの増加の背後にある隔壁によって、複数のフィールドを追加することができるpartitoned、パスの前に親である、パスは、サブ続い

作成 テーブル student_p(IDのINT、名前ストリング、ストリングsexex、年齢INT 、DEPT列)
 に分配することによって(部分文字列) 
終了行フォーマット区切られたフィールドによって 
保存されたとしてテキストファイルを。    

テーブルパーティションテーブルは、フィールドを追加することに相当し、そのフィールドを異なる値に与えられ、各値は、パーティションに対応し、この値は、フォルダHDFSの名前に対応します

 

2.書き込みデータ

。1、zhangsan、F、30、A、
2、リージ、F、39、B、
。3、wangwu、M 26は、C、

別のパーティションを設定し、二回毎回書か

負荷データテーブルstudent_pパーティションにローカルINPATH「/usr/lib/hive2.3.6/2.csv」(部分= 321 )。
負荷データテーブルstudent_pパーティションにローカルINPATH「/usr/lib/hive2.3.6/2.csv」(部分= 456)。

 長期鋸見るためにデータを書き込んだ後3.

ハイブ> SELECT * student_p; 
OK 
。1 zhangsan F 20は、河南321で
2リシF 30上海321 
3 wangwu mの40北京321。
1 zhangsan F 20は、河南456である。
2リシF 30上海456 
3 wangwu M 40北京456。
要した時間:0.287秒フェッチされた:6行(複数可)

4. HDFS上の長い鋸を見てください 

5.パーティションを見ます

ハイブ>  セレクト *  から student_p 一部= 321

6.データベースのメタデータ情報を見てみましょう

パーティションテーブルに格納されたパーティション情報

関連する他のパーティションテーブルがありますが、あなたが見ることができます

 

要約:各フォルダのパーティション、フォルダ、メタデータに格納されなければなりません。

このファイルは、メタデータにない場合、彼が存在していても、テーブルでパーティションのパーティションテーブルではありません以下に見えます

 

地区を追加

自動的にデータがロードされているパーティションを増やすだろう、あなたは、データをロードする別のパーティションを作成することはできません

パーティションを追加します。

ハイブ>  変更 テーブルを student_p 追加パーティションを(部分= 999)。

複数のパーティションを追加します。

ハイブ>  変更 テーブルを student_p 追加パーティションを(部分= 555)のパーティション(一部= 666)。

 

パーティションを削除

パーティションを削除

ハイブ>  変更 テーブル student_p ドロップパーティションを(部分= 555 )。
ドロップされた仕切り部= 555 
OK 
の時間が取ら:0.675

複数のパーティションを削除します。

ハイブ>  変更 テーブル student_p ドロップパーティションを(部分= 666)、パーティション(部分= 999 )。
仕切り部落下= 666が
仕切り部ドロップ= 999 
OK 
の時間が取ら:0.464

 

パーティションの数を見ます

ハイブ> ショーパーティションのstudent_p。
OK 
一部= 321 = 456 
要した時間:0.28秒、フェッチされた:2行(複数可)

 

パーティションテーブルの構造を見ます

ハイブ>  DESC フォーマットさstudent_p。
OK 
#のCOL_NAME                 DATA_TYPEコメント              
          
ID                       int型                                         
名の文字列                                       
sexex列                                       
年齢                      int型の                                         
DEPT列                                       
          
#パーティション情報           
#1 COL_NAMEの                DATA_TYPEコメント              
          
部分文字列                                       
          
#詳細な情報          
 データベース:hive1101                  
所有者:ルート                      
CREATETIME:11月〜金01  020025 PDT 2019      
LastAccessTime:UNKNOWN                   
保持:               0                         
場所:HDFS:// hadoop10:9000 / USR / hive_test / student_pの     
 表の種類:MANAGED_TABLE            

 

テーブルに関連付けられたデータ

私たちは、ディレクトリテーブルではなく、メタデータ内のフォルダであればの話の前に、その表は、このデータを見つけることです。

次に、どのように読み出され、このデータテーブルを置きますか?彼らは関連付けるために持っている、3つの方法があります

 

データ復旧をアップロードした後

1.直接HDFSにデータをアップロード

ハイブ> DFS - MKDIR - P / USR / hive_test / student_p /一部= 888 
ハイブ> DFS -入れ/ USR / libに/ hive2。3.6 / 2の.csv / USR / hive_test / student_p /一部= 888

HDFSは、ディレクトリリスト内のディレクトリとディレクトリに直接構築され、その後、このディレクトリにファイルをアップロード

2.クエリ無駄にデータパーティション、

3.修理テーブル

ハイブ> MSCK修理テーブルstudent_p。
OK 
パーティションない メタストア:student_p:部分が= 888 
修理:追加パーティションする student_pをメタストア:パート= 888 
要した時間:0.502秒、フェッチされた:2行(複数可)

これは、メタデータにパーティションを追加することです

4.クエリデータを見つけることができます

 

データをアップロードするパーティションを追加した後

図12は、第1の上記の手順を実行します。

次に、パーティションテーブルに追加し、新しいフォルダがパーティションテーブルを作成するために追加されます

ハイブ>  変更 テーブルを student_p 追加パーティションを(部分= 888)。

 

あなたは、データパーティションをロードするためのフォルダを作成した後、

私たちは、この確かに負荷が自動的にパーティションを作成します知っているので、

 

2つのパーティションを作成します。

2つのパーティション、すなわち多層パーティション、すなわち多層パス

 

マルチレベルのパーティションテーブルを作成します。

作成 、テーブル student1102(IDのint型、名前文字列、sexex文字列、年齢int型、DEPT列)
分割により月の文字列、 INT 
終了行形式区切られたフィールド 
保存としてテキストファイルを。

月、日は月

 

負荷データ

ロード・データのローカルINPATH ' /usr/lib/hive2.3.6/2.csv '   テーブル student1102パーティション(= ' 11 '= 2)。

 

HDFSでは1は、どのように物語を伝えることができます

 

クエリデータ

ハイブ>  を選択 *  から student1102 = 11 = 2 ;   

そして、それを追加

 

データのロード

負荷データINPATH ' /ユーザ/ tuoming /試験/試験'    テーブル part_test_3パーティション(MONTH_ID = ' 201805 '、day_id = ' 20180509 ' )。追加
 負荷データINPATH ' /ユーザ/ tuoming /試験/試験'上書き テーブル part_test_3パーティション(MONTH_ID = ' 201805 '、day_id = ' 20180509 ' )。覆盖

挿入上書きテーブル part_test_3パーティション(MONTH_ID = '201805 'day_id = ' 20180509 "を選択 *  からpart_test_temp。覆盖
 挿入  part_test_3パーティション(MONTH_ID = ' 201805 '、day_id = ' 20180509 'を選択 *  から part_test_temp。追加

 

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

下記の参考資料

 

 

 

参考文献:

https://blog.csdn.net/afafawfaf/article/details/80249974

おすすめ

転載: www.cnblogs.com/yanshw/p/11778127.html