ビッグデータ復習ノート——hive
11203 ワード
今回は、普段多く使われているデータウェアハウスhiveについて解説します
目次一、Hive 1、Hiveの紹介 2、Hiveの構築モード a)埋め込みDerbyモード b)Local方式 c)Remote方式 3、Hiveのデータベースおよびテーブル操作 a)データベースの作成 b)データベース を削除する. c)データベース の変更 d)データベース を使用4、HiveのSerDe 5、Hiveのインデックス a)インデックス作成 b)クエリインデックス c)再構築インデックス d)削除インデックス 6、Hiveの運転方式 一、Hive
1、Hiveの紹介
hiveは、hadoopクラスタに格納されたデータをクエリーするためにHiveQL方言を提供する.hiveは、ほとんどのクエリーをMapReduceジョブに変換できます.hiveはデータウェアハウスに最適であり、データウェアハウスを使用して関連する静的データ分析を行い、迅速な応答を必要とせず、データ自体が頻繁に変化しない.
データ・ウェアハウス・データ・ウェアハウスは、情報(分析により賢明な意思決定が可能)の中央リポジトリです.通常、データは定期的にトランザクション・システム、リレーショナル・データベース、およびその他のソースからデータ・ウェアハウスに流入します.ビジネスアナリスト、データ科学者、および意思決定者は、ビジネスインテリジェント(BI)ツール、SQLクライアント、およびその他の分析アプリケーションを使用してデータにアクセスします.
2、Hiveの構築モード
a)埋め込みDerbyモード
埋め込まれたデフォルトメタデータデータベースDerbyを使用して、単一プロセスにアクセスします.
注意:derbyストレージ方式を使用する場合、hiveを実行すると、現在のディレクトリにderbyファイルとmetastore_が生成されます.dbディレクトリ.このストレージ方式の弊害は、同じディレクトリの下でhiveクライアントが1つしかデータベースを使用できないことです.そうしないと、エラーが表示されます.
b)Local方式
他のリレーショナル・データベースを使用します.このリレーショナル・データベースはhiveと同じノードにあります.(例えばmysql)
ここでmysqlの権限はhiveの権限と一致することに注意してください.
c)Remote方式
他のリレーショナル・データベースを使用します.リレーショナル・データベースとhiveは同じノードではありません.
3.Hiveのデータベースとテーブル操作
データベース操作
a)データベースの作成
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, …)];
b)データベースの削除
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]; restrict:関連ビューと整合性制約が存在しないテーブルのみがcascadeを削除できることを確認します:関連ビューと整合性制約がすべて削除され、デフォルトではcascadeが使用されます.
c)データベースの変更
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, …); ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;
d)データベースの使用
USE database_name; USE DEFAULT;
テーブル作成操作の例
パーティションテーブル(検索を高速化するため)a、単一パーティション構築テーブル文:①create table day_table (id int, content string) partitioned by (dt string); ②単一パーティションテーブルは、日単位でパーティション化され、テーブル構造にid,content,dtの3列が存在する.③dtをフォルダとしてb、ダブルパーティション表文を区別する:①create table day_hour_table (id int, content string) partitioned by (dt string, hour string); ②二重パーティションテーブルは、日と時間でパーティション化され、テーブル構造にdtとhourの2列が新たに追加された.③まずdtをフォルダとし、次にhourサブフォルダで区別する
パーティション表構文の追加
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION ‘location’][, PARTITION partition_spec [LOCATION ‘location’], …];
partition_spec: :(partition_column = partition_col_value, partition_column = partition_col_value, …)
4、HiveのSerDe
①SerDeは、シーケンス化および逆シーケンス化のために使用される.2データストレージと実行エンジンの間に構築され、両者をデカップリングする.③Hiveは、ROW FORMAT DELIMITEDおよびSERDEによりコンテンツの読み書きを行う.
5、Hiveの索引
目的:クエリーの最適化と取得のパフォーマンス
a)索引の作成
create index t1_index on table tb_user2(name) as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’ with deferred rebuild in table t1_index_table; as:インデックスを指定する;in table:インデックステーブルを指定し、デフォルト生成を指定しないとdefault_に生成されます.tb_user2_t1_index__表中create index t 2_index on table tb_user2(name) as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’ with deferred rebuild; with deferred rebuildはalter index xxxを実行していることを示します.index on xxx rebuildの場合generateIndexBuildTaskListが呼び出され、IndexのMapReduceが取得され、インデックスとしてデータが埋め込まれます.
b)クエリーインデックス
show index on psn2;
c)インデックスの再構築
インデックス作成後にインデックスを再構築する必要があります)ALTER INDEX t 1_index ON tb_user2 REBUILD;
d)索引の削除
DROP INDEX IF EXISTS t1_index ON psn2;
6、Hiveの運転方式コマンドライン方式cli:コンソールモード スクリプト実行方式(実稼働環境で最大) JDBC方式:hiveserver 2 web GUIインタフェース(hwi、hueなど) また、Hiveのバケツ、ビュー、ダイナミックパーティションなどのまとめもあります.自分が深く理解していないし、実操をしていないので、ここでは人を見失うことはありません.必要な仲間は大物の博見に行ってみることができます.彼らは非常に細かくまとめます.
目次
1、Hiveの紹介
hiveは、hadoopクラスタに格納されたデータをクエリーするためにHiveQL方言を提供する.hiveは、ほとんどのクエリーをMapReduceジョブに変換できます.hiveはデータウェアハウスに最適であり、データウェアハウスを使用して関連する静的データ分析を行い、迅速な応答を必要とせず、データ自体が頻繁に変化しない.
データ・ウェアハウス・データ・ウェアハウスは、情報(分析により賢明な意思決定が可能)の中央リポジトリです.通常、データは定期的にトランザクション・システム、リレーショナル・データベース、およびその他のソースからデータ・ウェアハウスに流入します.ビジネスアナリスト、データ科学者、および意思決定者は、ビジネスインテリジェント(BI)ツール、SQLクライアント、およびその他の分析アプリケーションを使用してデータにアクセスします.
2、Hiveの構築モード
a)埋め込みDerbyモード
埋め込まれたデフォルトメタデータデータベースDerbyを使用して、単一プロセスにアクセスします.
注意:derbyストレージ方式を使用する場合、hiveを実行すると、現在のディレクトリにderbyファイルとmetastore_が生成されます.dbディレクトリ.このストレージ方式の弊害は、同じディレクトリの下でhiveクライアントが1つしかデータベースを使用できないことです.そうしないと、エラーが表示されます.
b)Local方式
他のリレーショナル・データベースを使用します.このリレーショナル・データベースはhiveと同じノードにあります.(例えばmysql)
ここでmysqlの権限はhiveの権限と一致することに注意してください.
c)Remote方式
他のリレーショナル・データベースを使用します.リレーショナル・データベースとhiveは同じノードではありません.
3.Hiveのデータベースとテーブル操作
データベース操作
a)データベースの作成
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, …)];
hive> create database mydb1 comment 'my db two' location '/user/hive/mymydbdb2' with dbproperties ('key1'='value1', 'key2' = 'value2');
OK
Time taken: 0.077 seconds
b)データベースの削除
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]; restrict:関連ビューと整合性制約が存在しないテーブルのみがcascadeを削除できることを確認します:関連ビューと整合性制約がすべて削除され、デフォルトではcascadeが使用されます.
hive> drop database if exists mydb1;
OK
Time taken: 0.011 seconds
c)データベースの変更
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, …); ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;
hive> desc database extended mydb1;
OK
mydb1 my db one hdfs://mycluster/user/hive/mydb1 root USER
Time taken: 0.045 seconds, Fetched: 1 row(s)
hive> alter database mydb1 set dbproperties('key1'='value1','key2'='value2');
OK
Time taken: 0.051 seconds
hive> desc database extended mydb1;
OK
mydb1 my db one hdfs://mycluster/user/hive/mydb1 root USER {key1=value1, key2=value2}
Time taken: 0.035 seconds, Fetched: 1 row(s)
d)データベースの使用
USE database_name; USE DEFAULT;
テーブル作成操作の例
hive> create table tb_user5 (id int, name string, age int, likes array<string>, addrs map<string, string>) row format delimited fields terminated by ',' collection items terminated by '-' map keys terminated by ':' lines terminated by '
' stored as SEQUENCEFILE location '/user/hive/u5';
OK
Time taken: 0.096 seconds
パーティションテーブル(検索を高速化するため)a、単一パーティション構築テーブル文:①create table day_table (id int, content string) partitioned by (dt string); ②単一パーティションテーブルは、日単位でパーティション化され、テーブル構造にid,content,dtの3列が存在する.③dtをフォルダとしてb、ダブルパーティション表文を区別する:①create table day_hour_table (id int, content string) partitioned by (dt string, hour string); ②二重パーティションテーブルは、日と時間でパーティション化され、テーブル構造にdtとhourの2列が新たに追加された.③まずdtをフォルダとし、次にhourサブフォルダで区別する
パーティション表構文の追加
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION ‘location’][, PARTITION partition_spec [LOCATION ‘location’], …];
partition_spec: :(partition_column = partition_col_value, partition_column = partition_col_value, …)
hive> alter table tb_user1 add partition (age=10) location '/user/hive';
OK
Time taken: 0.239 seconds
hive> load data local inpath '/root/users.txt' into table tb_user1 partition (age=10);
Loading data to table mydb2.tb_user1 partition (age=10)
Partition mydb2.tb_user1{age=10} stats: [numFiles=3, numRows=0, totalSize=1388, rawDataSize=0]
OK
Time taken: 1.836 seconds
4、HiveのSerDe
①SerDeは、シーケンス化および逆シーケンス化のために使用される.2データストレージと実行エンジンの間に構築され、両者をデカップリングする.③Hiveは、ROW FORMAT DELIMITEDおよびSERDEによりコンテンツの読み書きを行う.
5、Hiveの索引
目的:クエリーの最適化と取得のパフォーマンス
a)索引の作成
create index t1_index on table tb_user2(name) as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’ with deferred rebuild in table t1_index_table; as:インデックスを指定する;in table:インデックステーブルを指定し、デフォルト生成を指定しないとdefault_に生成されます.tb_user2_t1_index__表中create index t 2_index on table tb_user2(name) as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’ with deferred rebuild; with deferred rebuildはalter index xxxを実行していることを示します.index on xxx rebuildの場合generateIndexBuildTaskListが呼び出され、IndexのMapReduceが取得され、インデックスとしてデータが埋め込まれます.
b)クエリーインデックス
show index on psn2;
c)インデックスの再構築
インデックス作成後にインデックスを再構築する必要があります)ALTER INDEX t 1_index ON tb_user2 REBUILD;
d)索引の削除
DROP INDEX IF EXISTS t1_index ON psn2;
6、Hiveの運転方式