Hadoopのビッグデータ開発財団シリーズ:ナイン、HiveQL

まず、何HiveQLこと?

1.HiveQL概要
ハイブは、データウェアハウス解析システムである我々は以前の話を聞いた、MapReduceのプロセスを完了するために、主にSQLクエリです
HiveQLエッセンスでSQLのようなものです。問い合わせへのハイブの内容分析によってメイクにHiveSQLの必要性は、MapReduceのユーザーに精通していないにも簡単に、クエリにSQLを使用して集計し、データを分析することができます。
2.HiveQLとハイブ機能
SQLリレーショナルデータベース(1)はわずかに異なっているが、このようなDDL、DMLおよび共通集合関数として文の大多数のサポートは、クエリ、クエリ条件に参加します。
ハイブがオンラインには適していません(2)、リアルタイム問合せ機能を提供していません。
それは不変のデータに基づいてバッチジョブの数が多いでの使用に最適です。HiveQLが更新をサポートしていませんので、インデックス作成と業務、及びそのサブクエリをサポートし、業務への参加は非常に限られている、それが基礎となるのHadoopプラットフォームその決定に依存しているため、その機能のいくつかは、SQLが一致しないということです。しません
(3)ハイブスケーラブルな、動的デバイス、スケーラブルでフォールトトレランス機能を追加サポートHadoopクラスタ
 
次に、一般的な操作の簡単な紹介:
 

第二に、テーブルと削除テーブルを作成

テーブルを作成します。1.

    
    
  1. CREATE [① TEMPORARY ] [② EXTERNAL ] 表には 、[③ IF NOT EXISTS ] [データベース名] TABLE_NAME 
  2.     [(COL_NAMEのDATA_TYPE)⑨ COMMENTの col_comment]、... [constraint_sepecification]
  3.     [ HOWの table_comment]
  4.     [④PARTITIONED BY(COL_NAMEのDATA_TYPE) COMMENT col_comment]、...)]
  5.     [⑤CLUSTERED BY(col_name1、col_name2、...)[⑩SORTED BY(COL_NAME [ ASC | DESC ]、...)] INTO num_bucketsバケット]
  6.     [斜めBY(COL_NAME、COL_NAME、...)]
  7.         ON ((col_value、col_value、...)、(col_value、col_value、...)、...)
  8.         [ STORED ASディレクトリを]
  9.     [
  10.     [⑥ ROWのFORMATの ROW_FORMAT]
  11.     [⑦ STORED AS FILE_FORMAT]
  12.         | STORED BY '' [ WITH SERDEPROPERTIES(...)]
  13.     ]
  14.     [LOCATIONのhdfs_path]
  15.     ......(より多くのパラメータは、公式ドキュメントに記載されています)
  16. CREATE [ TEMPORARY ] [ EXTERNAL ] TABLE [ IF NOT EXISTS ] [データベース名] TABLE_NAME
  17.     ⑧ LIKE  existing_table_or_view_name
  18.     [LOCATIONのhdfs_path]

次のキーワードを説明しています

①TEMPORARY
一時テーブルを作成し、一時テーブルは、現在のセッション後に有効になり、テーブルは自動的にセッションの終了後に削除されます。
注:DOESがパーティションフィールドをサポートしてインデックスを作成しません。
 
②EXTERNAL
外部表、開発パス(LOCATION)テーブルの同じ時間構造における実際のデータへのポインタを作成し、外部表を作成し、データではなく、変更を行うためのデータの場所へのパスのみを記録します。あなたがテーブルを削除すると、メタデータのみ外部表ではなく、削除データを削除します。
hdfs_nameでLOCATIONを使用
 
③IFはEXISTS、NOT
指定された名前を持つテーブルを作成します。同じテーブル名が既に存在する場合は、例外がスローされ、ユーザーはこの例外を無視するIFはNOT EXISTオプションを使用することができます。
 
④PARTITIONEDBY
テーブルは、ディレクトリの存在下で別々に各パーティションを1つ以上のパーティションを有していてもよいです。
 
⑤CLUSTEREDBY
点バレル、二つの理由点バレルは、第1、第2、より効率的なサンプリングで、より効率的なクエリです。
物理的には、各バケットは、パーティションテーブルまたはファイルであり、各ファイルは、マップリデュースのタブの出力パーティションに対応します。
 
⑥ROWのFORMAT
データのロード、支柱分離時に作成されたテーブルを設定するために使用されています。
 
⑦STOREDAS
[FILE_FORMATとして格納]
使用される (持つ前のセクションで述べた)ハイブに格納されているファイル形式を指定します 典型的には、[行フォーマット]を結合用います。
 
⑧LIKE
既存のテーブルへの援助、 空のテーブルを作成します
 
⑨COMMENT
効果のコメントへの声明
 
⑩SORTEDBY
指定は、どの列に従ってソート。
 
CATS
人から選択*としてテーブルPERSON2を作成します。
表を作成している間にデータを挿入し、新しいテーブルを生成します。
 
2. [削除]テーブル
(1)削除テーブル
[DROPテーブルTABLE_NAME]
    定義や関連テーブルの削除予定リスト(ルールインデックス、およそ、トリガ、主キー、など)を含みます。テーブルが削除されると明らかに、テーブルには、データのすべての行が一緒に削除されますが含まれています。   
(2)トランケートテーブル
[TRUNCATEのテーブルtable_name]
    TRUNCATEコマンドは、単にテーブル内のデータ行をすべて削除されます。構造及びインデックステーブルの全てが存在し続けて、カラム上のルールに結合し、デフォルト値は、結合制約が継続し、トリガがアクティブなままです。あなたは、(上記のように)テーブルを削除するコマンドを入力するまで。
 

第三には、テーブルを変更します

1.テーブルの名前を変更します
new_table_name TO ALTER TABLE table_nameの名前の変更。
 
属性テーブルを変更します。2.
ALTER TABLE table_nameのSETはtable_propertiesをTBLPROPERTIES。
表まさにSedeの表変更、編集テーブルserdeカラム分離、およびその他の変更に関する注記
 
3.パーティションテーブルを変更します。
(1)新しいパーティション
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION 指定分区 [LOCATION ‘location1’];
    
    

(パーティションテーブルに指定された)(2)の名前を変更パーティションALERT表

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION 指定分区 [LOCATION ‘location1’];
  
  

(3)自動回復パーティション(自動パーティションは、ディレクトリ構造に従って分割されたシステム)MSCK

MSCK REPAIR TABLE table_name;
    
    

(4)パーティションを削除

ALTER TABLE table_name DROP [IF EXISTS] PARTITION 指定分区(例:(y='WT0228',m='201501'));
    
    

4. [変更列名変更COLNAME


    
    
  1. ALTER TABLEを table_nameの[ PARTITION partition_spec] CHANGE [ COLUMN ] col_oldname col_newname col_type
  2.     [ HOW col_col_comment]。

5. [追加]列または列置換


    
    
  1. ALTER TABLE TABLE_NAME TABLE_NAME
  2.      ADD | REPLACE COLUMNS (COL_NAMEのDATA_TYPEを、......)

第四に、ビュー

1.Hiveビュー機能:
(1)のみ論理ビューではなく、マテリアライズド・ビュー(すなわち物理テーブル自体が格納されているビュー・データをマテリア)
(2)のみ、クエリビュー、/挿入/更新/削除データをロードすることはできません
ビューの作成時には(3)、単にクエリビューのメタデータを保存するために、ビューは、それらの対応するサブクエリを実行し始めました。
 
ビューの2.動作
(1)を作成

    
    
  1. CREATE VIEWを [ IF NOT EXISTS ] [DB_NAMEを。] 
  2.     AS SELECT ...。

(2)変更

ALTER VIEW [db_name.] view_name SET TBLPROPERTIES table_properties;
    
    

(3)削除

DROP VIEW [IF NOT EXISTS] [db_name.] view_name;
    
    

V.インデックス

(1)を作成

    
    
  1. CREATE INDEX index_nameのを
  2.     ON TABLEの  base_table_name
  3.     AS INDEX_TYPE;

(2)削除

DROP INDEX [IF EXISTS] index_name ON table_name;
    
    

(3)変更

ALTER INDEX index_name ON table_name [PARTITION partition_spec] REBUILD;
    
    

第六に、表示情報

1.リストのすべてのライブラリ
SHOWデータベース。
 
2.次の表は、すべてのライブラリ
データベース名のSHOW TABLES;
 
3.リストのすべてのビュー
SHOWビュー[IN /データベース名FROM]
 
パーティション表4.一覧
SHOWパーティションTABLE_NAME;
 
表示インデックス
SHOW(INDEX | INDEXES)[| DB_NAME(IN FROM)] table_with_index ON。 
 
6.すべての列情報の表示リスト
SHOWのCOLUMNS(FROM | IN)TABLE_NAME [(FROM | IN)DB_NAME];
 
7.表示機能(カスタム関数)情報
SHOW機能 "*。";
 
表示ロックテーブル(テーブルに追加は、読み取りおよび書き込みアクセス)情報
SHOW LOCKS <テーブル名>
 

七つのユーザー定義関数UFD

3ハイブUDFがあります。
1.UDF:
、単一のデータラインに動作する1つに変換します
2.UDAF:
集約関数は、いくつかの出力関数を生成し、入力データを複数受け付け
UDAFのカスタム実装は、UDAFクラスの継承を実現しています。
ハイブサーバーに追加のjarパッケージには、関数を作成します
3.UDTF:
関数を使用して複数の行にデータの行
公開された18元の記事 ウォンの賞賛0 ビュー443

まず、何HiveQLこと?

おすすめ

転載: blog.csdn.net/weixin_45678149/article/details/104943527