まず、どのようなハイブいますか?
MapReduceのにHQL / SQLのHadoop上で実行されている、と見ることができます:ハイブは本質であるSQLの構文解析エンジン
HadoopのHiveのが基づいているデータ・ウェアハウス・ツールは、テーブルにデータファイルの構造をマップし、SQLに似たクエリを提供することができます。
ハイブの表は、その後、サブディレクトリに対応するパーティション値パーティションがある場合は、HDFSファイルディレクトリ、ディレクトリ名にテーブルの対応です。
ハイブチュートリアル:ハイブウィキ
二、ハイブアーキテクチャ:
1.ユーザインタフェース:
(1)CLI:あなたが起動したときにハイブにもコピーを開始します
(2)JDBCクライアントは:スリフト、javaアプリケーションをカプセル化し、サーバがで指定されたホストとポートで動作しているハイブ別のプロセスに接続することができます
(3)ODBCクライアント:: ODBCドライバは、アプリケーションハイブに支持ODBCプロトコル接続することを可能にします。
2.Thriftサーバー:ソケットベースの通信、クロス言語サポート
3.パーサ(実行される文を解析):
(1)コンパイラ:文を解析し、解析、コンパイル、作業計画の照会を開発
(2)オプティマイザ:進化アセンブリルール:カラムの構成を、圧力下述
(3)アクチュエータ:すべてのジョブの順序を実行します。
4.元のデータベース:
データファイルとメタデータ:ハイブデータは、2つの部分からなります。メタデータは、基本的な情報ハイブリポジトリを格納するために使用され、それは、MySQLの、ダービーとして、リレーショナルデータベースに格納されています。メタデータが含まれています:列属性情報データベース、テーブル名、および表パーティションとその属性、テーブルを、内容やその他のデータのテーブルが配置されています。
三、ハイブ操作機構
1. Aのユーザのユーザへのインタフェースは、ハイブ、公開されたハイブSQLを接続し、
2.Hive クエリを解析し、クエリプランを策定。
クエリを回し3.Hive MapReduceジョブへ。
4.Hive のHadoopのMapReduceでの実装の仕事。
四、ハイブの長所と短所
位置データウェアハウス、データ分析及び偏向の方向の計算
1.利点:
(1)大量のデータを扱うのに適し
(2)クラスタのCPUコンピューティングリソース、記憶リソース、並列コンピューティングを活用
(3)クラスSQLは、自動的に生成されたMapReduce
(4)。スケーラビリティ
2.短所:
(1)有限HQL発現.Hive
低い(2).Hive効率:ハイブMRジョブは通常インテリジェントない、自動的に生成され、HQLチューニング困難、粗い粒径;乏しい制御性。
非効率性を示します。SQLのSparkSQL出現を効果的にHadoop上の分析の業務効率を向上させます。
五、ハイブ該当シーン
1.大容量データ記憶装置およびデータ分析
2.データマイニング
リアルタイム問合せに適していない複雑なアルゴリズムや計算、には適していません3。
第六に、ハイブの使用
(A)接続ハイブ
使用HiveServer2、ビーライン、CLI接続
(II).Hiveデータタイプ
分類 |
タイプ |
説明 |
例 |
プリミティブ型 |
BOOLEAN |
真/偽 |
TRUE |
|
TINYINT |
127 -128整数符号付き1バイト |
1Y |
|
SMALLINT |
-32768〜32767の整数の符号付き2バイト |
1S |
|
INT |
4バイトの符号付き整数と |
1 |
|
BIGINT |
8バイトの符号付き整数 |
1L |
|
浮く |
4バイトの単精度浮動小数点数1.0 |
|
|
ダブル |
8バイトの倍精度浮動小数点 |
1.0 |
|
DEICIMAL |
任意精度の符号付き10進数 |
1.0 |
|
ストリング |
文字列、可変長 |
「」、 'B' |
|
VARCHAR |
可変長文字列 |
「」、 'B' |
|
CHAR |
固定長文字列 |
「」、 'B' |
|
バイナリ |
バイト配列 |
表現することはできません。 |
|
TIMESTAMP |
タイムスタンプ、ナノ秒の精度 |
122327493795 |
|
日付 |
日付 |
「2016年3月29日」 |
複合型 |
アレイ |
同じタイプの順序集合 |
アレイ(1,2) |
|
地図 |
キー値、キーがプリミティブ型である必要があり、値は任意の型を指定できます |
マップ( ''、1、 'B'、2) |
|
STRUCT |
フィールドセットは、異なるタイプであってもよいです |
構造体( '1'、1,1.0)、named_stract( 'COL1'、 '1'、 'COL2'、1 'clo3'、1.0) |
|
連合 |
の限られた範囲内の値 |
create_union(1、 ''、63) |
(C).Hive手術台と
データ格納されたメタデータ構成+
ハイブはまた、データベースは、CREATE DATABASEでデータベースを作成することができました。デフォルトのライブラリがデフォルトのライブラリです。
1は、2つのホスティングの種類と外側テーブルを含みます
(1)データストレージ
マネージド表:倉庫内のディレクトリデータストレージ。
外部表:任意のディレクトリデータストレージHDFS。
(2)データを削除しました
マネージド表:削除メタデータとデータ。
外部表:削除のみメタデータ。
(3)テーブルを作成します。
表をホスティング:テーブルtable_name(ATTR1 STRING)を作成します。
外部表:CREATE EXTERNAL表table_name(ATTR1列)LOCATION 'パス';
データ分割アプローチは、クエリをスピードアップすることができます。表 - >パーティション - >バレル。
2.パーティション(フォルダレベルの分類を行います)
(1)パーティション列データが実際に格納されていませんが、パーティションテーブルは、ディレクトリの下のディレクトリをネストされました。
例:
データ:
(2)の表は、様々な寸法に(上記例に係るIDファンを分割することである)に分配されてもよいです。
(3)パーティションができ、効率を改善するために、検索クエリを絞り込みます。
パーティションが持つテーブルを作成することである(4)BY PARTITION定義句。
(5)パーティションにデータをロードするには、パーティションの値は、文の負荷を使用して表示されるように指定されました。
(6)使用SHOWパーティション文はどのような次のハイブのパーティションテーブルを参照します。
(7)を使用してSELECT指定されたパーティション内のビューデータに文を、ハイブは、指定されたパーティションのデータをスキャンします。
(8)ハイブテーブルは2つのパーティション、パーティション静的および動的なパーティションに分割されています。静的および分割ダイナミックパーティションの時間差は、(通常はヘルプをパーティションでハイブにしたがって命名規則を通して私たちは、ハイブインポートデータ、パーティション名を手動で入力された、またはデータパーティションを決定するためのデータにある自動的に生成されたパーティションを)。大バルクインポートデータのために、あることは明らかである動的分割の使用がより簡便です
3.バレル(ファイルに分類分割)
(1)バレルは、クエリパフォーマンスを向上させることができ、テーブルの追加の構造上に取り付けられています。)(マップ側-参加を行うことを助長します
(2)より便利で効率的なサンプリングを使用します
(3)を使用して、クラスタの列を、分割されるバケットの数は、浴槽が使用句の指定に分割されます。
4つのバケットに(ID)によってクラスタ化されたテーブルbucketed_user(ID int型、名前の文字列)を作成します。
(4)あなたがソートに行うことができ、データバケット。使用SORTED BYの句。
(ID)4つのバケットに(識別ASC)でソートすることによって、クラスタ化テーブルbucketed_user(ID int型、名前の文字列)を作成します。
(5)当社独自のポイントの樽を推奨していませんが、ハイブがバレルを分けてみましょうすることをお勧めします。
バケットが必要なデータが充填される(6)分前に提供することがtrueにセットhive.enforce.bucketing。(他のテーブルからのデータを照会するバレル槽内に挿入された作成、動的プロセス)
ユーザーからの選択*上書きテーブルbucket_usersを挿入します。
(7)が実質的に桶のMapReduce出力パーティション・ファイルに対応する:バレルの同じ数とジョブによって生成されたタスクを減らします。
4.ストレージ・フォーマット
「ライン形式」(行形式)と「ファイル形式」(ファイル形式):ハイブが2次元からストレージ・テーブルを管理します。
(1)ラインフォーマット:
行形式でデータを格納します。ハイブの観点によれば、定義はSerDeライン形式によって定義され、すなわち、シリアライゼーションおよびデシリアライゼーション。すなわち、クエリデータ内SerDeファイルの形式のデータのバイト列デシリアライズ使用する内部動作ハイブのデータ行の形で目的とします。テーブルにデータを挿入するときハイブ、工具の配列の形式で出力ファイルに書き込まれたバイトのシーケンスに内部データ線表現をハイブて行くであろう。
(2)ファイル形式
最も単純なファイル形式は、プレーンテキストファイルですが、あなたはまた、列指向と行指向のバイナリファイル形式を使用することができます。バイナリファイルは、シーケンシャルファイル、アブロ、のrcfile、ORC、寄木細工のファイルとすることができます。
5.データのインポート
マルチシートの挿入、動的分割インサート:(1)を導入すると、データモードを挿入します。
導入された(2)ロード・モード
(3)CATS方法:表を作成し、データをチェックしてください
6.変更、および削除テーブル
、「読み取りモード」を用いてハイブのでテーブルを作成した後、それはテーブル定義に非常に柔軟な支持修飾です。しかし、一般的に、我々はあなたが新しい構造に合致するデータを変更することを確認するために、多くの場合、警戒する必要があります。
(1)リネームテーブル
(2)カラムの定義を変更
(3)削除テーブル
表切断(4)(記憶されたテーブル構造、データテーブルが空)