hiveに関する知識(一)
6029 ワード
今日hiveの関連知識を整理して、その中にhiveの原理とその表の関連するいくつかの内容が含まれて、主に個人の理解です:1.hiveは何の役に立つの? hiveはデジタル倉庫ツールであり、抽出、変換、ロードデータ(ETL)、Hiveはミリ秒レベルの応答には適用されない.その下層はMRプログラムを呼び出してYarn上でhdfs上の構造化静的データを操作してデータを処理する機能を実現するためであるが、HiveはsqlとMRを結合し、多次元のクエリーを実現することができ、ユーザーの学習コストが低く、使いやすい.
2.hive動作原理 Hiveの動作原理の本質はクライアントが発起したsql文を最下位のMRプログラムに変換して を実行することである.(1)hiveはクライアントからの要求(sql文) を受信する.(2)要求に従ってmysqlのテーブルのメタデータ情報 を取得する.(3)mysql文を解析、コンパイル、最適化し、MR文 に変換する(4)に変換するMRプログラムはYARN上で実行され、hdfsを操作してクライアントニーズ を完了する.
3.hiveデータベースのプロパティの表示(1)hdfs,yarnおよびmysqlサービス を先にオンにする(2)hiveserver 2&サービス をオープン(3)beelineに入り、リモート接続クライアントを開き、hiveサービスに接続!connect jdbc:hive2://linux01:10000 (4)show databases; (5)desc database database_name;
4.時計の作り方(1)hdfs,yarnおよびmysqlサービス(2)hiveserver 2&サービス(3)beelineに入り、リモート接続クライアントを開き、hiveサービスに接続!connect jdbc:hive2://linux01:10000 (4)create table table_name(フィールドタイプ.フィールドタイプ,...)row format delimited fields terminated by「区切り記号」 5.データのインポート方法データのインポートには、次の4つの方法があります.
(1)データファイルを直接テーブルのディレクトリに転送する**(2)ローカルのデータをテーブルのディレクトリにアップロードし、リモート接続のインタフェースでload data local inpath""into table tablename;**この方式で用いられる最大(3)hdfsのデータをテーブルのディレクトリの下に移動し、リモート接続のインタフェースでload data inpath""into table tablenameを実行する.(4)テーブル作成時に、テーブル抽出データのディレクトリ(location"path")をデータが存在するディレクトリに設定する
6.内部テーブル、外部テーブル、およびそれらの適用シーン外部テーブルは、テーブルの作成時にcreateとtableの間にexternalキーを付け、外部テーブル外部テーブルとして宣言する特徴は、テーブルを削除する際に、テーブル内のデータが一緒に削除されないこと、すなわち、このデータテーブルを共有する他の操作に影響を与えないことである.一般的に、このテーブルが元のデータまたは共通のデータに適用されるシーンでは、デフォルトでexternalキーを付けないテーブルが作成されます.内部テーブルは管理テーブルとも呼ばれます.テーブルを削除すると、テーブル内のデータがビジネスデータに適用されるシーン、すなわち、使い終わった後に削除できる場合を除きます.パーティション・テーブルとは何ですか.パーティション・テーブルには何の役割がありますか. パーティションとは、クエリーの次元に基づいてデータを格納管理パーティションテーブルである.パーティション機能を実現したテーブルパーティションテーブルは、クエリーデータの際により効率的である.通常のテーブルクエリーデータは、テーブルディレクトリの下のすべてのファイルを検索し、条件に合致するデータをフィルタする必要があるが、パーティションテーブルは直接パーティションクエリーを指定することができ、より効率的である.8.パーティション表、二次パーティション表を作成し、データ をインポートする
9.データインポート方式まとめデータインポートには以下の方式がある:1)基本方式データファイルを直接テーブルのディレクトリにアップロードし、ローカルからテーブルのディレクトリにデータファイルをアップロードするLoad data local inpath“”into table tb_name; hdfsからテーブルのディレクトリの下にファイルを移動するLoad data inpath""into table tb_name; テーブル作成時にテーブル抽出データを直接指定するディレクトリ2)Insert構文(インクリメンタル)データInsert into tb_をインポートname values(v1,v2…); 複数のデータをインポートするInsert into tb_name values(v1,v2…),values(v1,v2…)…; 別のテーブルデータのインポートInsert into tb_name select * from tb_name; インポートデータの上書きname select * from tb_name; 3)create構文(全量)フィールドタイプ、フィールドタイプ、...)as Create table tb_name() as Select * from tb_name; 4)importインポートまずexportエクスポートExport table tb_name to “”; 再importインポートImport table tb_name from “”; 注意:インポートするデータは、前のステップでエクスポートしたデータのみです.書き出し方法まとめ1)ローカルに書き出し区切り記号なし:Insert overwrite local directory""Select*from tb_name; 区切り記号付き:Insert overwrite local directory""Row format delimited fileds terminated by"t"Select*from tb_name; 2)hdfsにエクスポート区切り記号なし:Insert overwrite directory""Select*from tb_name; 区切り記号付き:Insert overwrite directory""Row format delimited fileds terminated by"t"Select*from tb_name; 3)hdfsコマンドHdfs dfs-get"src""local";4)hiveコマンド実行sql文Hive-e"sql"実行sqlファイルHive-f"filename"5)Export Export table tb_name to “”; 6)Sqoopは、hdfsの構造化データをmysqlテーブルにインポートしたり、mysqlテーブルのデータをhdfsにインポートしたりするために使用されます.
2.hive動作原理
3.hiveデータベースのプロパティの表示
4.時計の作り方
(1)データファイルを直接テーブルのディレクトリに転送する**(2)ローカルのデータをテーブルのディレクトリにアップロードし、リモート接続のインタフェースでload data local inpath""into table tablename;**この方式で用いられる最大(3)hdfsのデータをテーブルのディレクトリの下に移動し、リモート接続のインタフェースでload data inpath""into table tablenameを実行する.(4)テーブル作成時に、テーブル抽出データのディレクトリ(location"path")をデータが存在するディレクトリに設定する
6.内部テーブル、外部テーブル、およびそれらの適用シーン
1)
create table tb_name(
,
,
...
)
partitioned by( )
row format delimited fields terminated by “”;
load data local inpath “” into table tb_name partition( =”’’);
2)
create table tb_name(
,
,
...
)
partitioned by( , )
row format delimited fields terminated by “”;
load data local inpath “” into table tb_name partition( =”’’, =””);
9.データインポート方式まとめデータインポートには以下の方式がある:1)基本方式データファイルを直接テーブルのディレクトリにアップロードし、ローカルからテーブルのディレクトリにデータファイルをアップロードするLoad data local inpath“”into table tb_name; hdfsからテーブルのディレクトリの下にファイルを移動するLoad data inpath""into table tb_name; テーブル作成時にテーブル抽出データを直接指定するディレクトリ2)Insert構文(インクリメンタル)データInsert into tb_をインポートname values(v1,v2…); 複数のデータをインポートするInsert into tb_name values(v1,v2…),values(v1,v2…)…; 別のテーブルデータのインポートInsert into tb_name select * from tb_name; インポートデータの上書きname select * from tb_name; 3)create構文(全量)フィールドタイプ、フィールドタイプ、...)as Create table tb_name() as Select * from tb_name; 4)importインポートまずexportエクスポートExport table tb_name to “”; 再importインポートImport table tb_name from “”; 注意:インポートするデータは、前のステップでエクスポートしたデータのみです.書き出し方法まとめ1)ローカルに書き出し区切り記号なし:Insert overwrite local directory""Select*from tb_name; 区切り記号付き:Insert overwrite local directory""Row format delimited fileds terminated by"t"Select*from tb_name; 2)hdfsにエクスポート区切り記号なし:Insert overwrite directory""Select*from tb_name; 区切り記号付き:Insert overwrite directory""Row format delimited fileds terminated by"t"Select*from tb_name; 3)hdfsコマンドHdfs dfs-get"src""local";4)hiveコマンド実行sql文Hive-e"sql"実行sqlファイルHive-f"filename"5)Export Export table tb_name to “”; 6)Sqoopは、hdfsの構造化データをmysqlテーブルにインポートしたり、mysqlテーブルのデータをhdfsにインポートしたりするために使用されます.