ビッグデータ復習ノート——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, …)];
    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の運転方式
  • コマンドライン方式cli:コンソールモード
  • スクリプト実行方式(実稼働環境で最大)
  • JDBC方式:hiveserver 2
  • web GUIインタフェース(hwi、hueなど)
  • また、Hiveのバケツ、ビュー、ダイナミックパーティションなどのまとめもあります.自分が深く理解していないし、実操をしていないので、ここでは人を見失うことはありません.必要な仲間は大物の博見に行ってみることができます.彼らは非常に細かくまとめます.