ハイブビッグデータテクノロジー(ハイブコマンド)
1. DDLデータ定義
1.1データベースの作成
1)データベースを作成し、HDFS上のデフォルト・データベース・ストレージ・パスは/user/hive/warehouse/*.dbあります。
create database db_hive;
裁判官が存在しない場合は2)、すでにエラーが存在するデータベースを作成するの増加は避けてください。(標準文言)
create database if not exists db_hive;
3)データベースを作成し、HDFSに保存されている場所のデータベースを指定します
create database db_hive2 location '/db_hive2.db';
2.2クエリのデータベース
2.2.1ディスプレイのデータベース
1。表示データベース
show databases;
2。データベースクエリの表示をフィルタします
show databases like 'db_hive*';
2.2.2 Viewデータベースは詳細
1。表示データベース情報
desc database db_hive;
2。拡張ディスプレイデータベースの詳細、
desc database extended db_hive;
2.2.3は、現在のデータベースを切り替えます
use db_hive;
2.3データベース修正
ユーザは、データベースキーを提供したALTER DATABASEコマンドDBPROPERTIESを使用することができます-属性値の値を、属性情報は、このデータベースでは説明しました。他のメタデータ情報データベースには、データベースが置かれているデータベース・ディレクトリの名前と場所を含む、不変です。
alter database db_hive set dbproperties('createtime'='20170830');
2.4データベースの削除
1。削除空のデータベース
drop database db_hive2;
2。あなたが削除するとデータベースが存在する場合があるかどうかを判断するために、データベースを最大限に活用する存在しません。
drop database if exists db_hive2;
3。データベースが空でない場合は、削除することを強制、カスケードコマンドを使用することができます
drop database db_hive cascade;
2.5创建表
1建表语法
CREATE [EXTERNAL]表[NOTが存在する場合]テーブル名
[(COL_NAMEのDATA_TYPE [COMMENTのcol_comment]、...)]
[コメントのtable_comment]
[PARTITIONED BY(COL_NAMEのDATA_TYPE [COMMENTのcol_comment]、...)]
[ CLUSTERED BY(COL_NAME、COL_NAME、...)
[SORTED BY(COL_NAME [ASC | DESC]、...)] num_bucketsバケットINTO]
[行形式のROW_FORMAT]
[FILE_FORMAT]として保存され
、[LOCATIONのhdfs_path]
2。フィールドの説明
(1)指定した名前を持つテーブルを作成するために、テーブルを作成します。同じテーブル名が既に存在する場合は、例外がスローされ、そうでないが、この例外を無視するオプションを存在している場合、ユーザーは使用することができます。
テーブルの構造は、実際のデータ点(LOCATION)へのパスを指定しながら、(2)外部キーワードは、ユーザが外部表を作成することを可能にする場合、ハイブは、内部テーブルを作成し、データウェアハウスのデータポイントのパスに移動し、外部を作成する場合テーブルには、場合にのみデータパスを記録し、場所は、データに変更を加えることはありません。削除するには、テーブル、内部テーブルおよびデータのメタデータが一緒に削除され、外部のテーブルデータのみを削除しないでください、メタデータを削除します。
(3)COMMENT:テーブルおよび列にコメントを追加。
(4)PARTITIONED BYパーティションテーブルを作成する
(5)CLUSTERED BY部品表のキットを作成する
(6)SORTEDによって使用されない
(図7)ROW FORMAT
DELIMITED [コレクションcharでTERMINATED商品] [フィールドはBY CHAR TERMINATED]
[charでTERMINATED MAPキー] [charでTERMINATED LINES]
| SERDEのserde_name [WITH SERDEPROPERTIES(PROPERTY_NAME = PROPERTY_VALUE、PROPERTY_NAME = PROPERTY_VALUE、...)]
ユーザーがカスタムSerDeテーブルを構築したり、使用することができた場合、内蔵SerDe。あなたが行形式またはROWのFORMAT DELIMITEDを指定しない場合は、独自のSerDeを使用します。テーブルの構成において、ユーザは、指定の表に記載されているユーザーは、カスタムSerDeを指定しながら、テーブルの列を指定する必要があり、ハイブの表は、特定のデータ列SerDeによって決まります。
SerDeはシリアル化および逆シリアル化するためのもの、シリアライズ/ Deserilizeの短いです。
(8)記憶されたストレージ・ファイル・タイプを指定する
共通ストアファイルタイプ:SEQUENCEFILE(バイナリシーケンスファイル)、TEXTFILE(テキスト)、rcfileの(柱状記憶フォーマットファイル)
ファイルは、プレーンテキストデータである場合、AS TEXTFILE STOREDを使用することができます。あなたは、格納されたAS SEQUENCEFILEを使用して圧縮データに必要がある場合。
(9)LOCATION:指定位置テーブルは、HDFSに格納されています。
(10)のような、ユーザが既存のテーブルの構造をコピーすることを可能にするが、データをコピーしません。
2.5.1管理表
1。理論的な
テーブルは、時にはまた、内部テーブルと呼ばれる、デフォルトでは、いわゆる管理テーブルを作成しています。このため、テーブルの、ハイブは(多かれ少なかれ)になり、データのライフサイクルを制御します。上記で定義したハイブは、これらのテーブルは、構成項目hive.metastore.warehouse.dir(例えば、/ユーザ/ハイブ/倉庫)のサブディレクトリに格納されたデータをデフォルト設定されます。我々は、管理テーブルを削除すると、ハイブは、テーブル内のデータを削除します。経営陣は、共有データへのテーブルや他のツールには適していません。
2。以下の場合実用的な操作
共通テーブルを作成する(1)
create table if not exists student2(
id int, name string
)
row format delimited fields terminated by '\t'
stored as textfile
location '/user/hive/warehouse/student2';
(2)(クエリの結果は、新たに作成されたテーブルに追加される)クエリ結果に基づいて、テーブルを作成します
create table if not exists student3 as select id, name from student;
(3)既存のテーブル構造に基づいてテーブルを作成します
create table if not exists student4 like student;
タイプ(4)ルックアップテーブル
desc formatted student2;
2.5.2外部表
1。理論は、
テーブルには、その全額出資のハイブは、このデータではないのでことを、外側のテーブルですので。このデータを削除しないテーブルを削除しますが、情報のメタデータ記述が削除されます。
2。管理と外側のテーブルの利用シナリオは、
毎日のウェブサイトのログを定期的にHDFSテキストファイルに流れ込む収集されます。内部にSELECT + INSERTを中間テーブルに使用される統計分析の多数の外部テーブル(元のログテーブル)を行って、内部テーブルを使用して、結果を表に格納され、データテーブルに基づいて。
3。ケースの実用的な操作
(1)生データ
わずか
するテーブルステートメントの(2)建設
分割テーブルを作成します
create external table if not exists default.dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';
Employeeテーブルを作成します。
create external table if not exists default.emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by '\t';
(3)は、テーブルが作成を参照してください。
show tables;
外部表にデータに導入された(4)
データをインポート
load data local inpath '/opt/module/datas/dept.txt' into table default.dept;
load data local inpath '/opt/module/datas/emp.txt' into table default.emp;
クエリ結果
select * from emp;
select * from dept;
(5)表示フォーマットのデータ
desc formatted dept;
2.5.3管理テーブル及び交換の外側テーブル
タイプ(1)ルックアップ・テーブル
desc formatted student2;
(2)内部テーブル外側のテーブルstudent2を変更します
alter table student2 set tblproperties('EXTERNAL'='TRUE');
タイプ(3)ルックアップテーブル
desc formatted student2;
(4)内部テーブル外側のテーブルstudent2を変更します
alter table student2 set tblproperties('EXTERNAL'='FALSE');
タイプ(5)ルックアップテーブル
desc formatted student2;
注:( '外部' = 'TRUE')と( 'EXTERNAL' = 'FALSE')固定文言、大文字と小文字を区別!
2.6パーティションテーブル
パーティションテーブルは、実際のファイルシステムHDFSフォルダ上の別のファイルに対応している、フォルダにはすべてのデータファイルのパーティションです。ハイブのパーティションを分割ディレクトリでは、サービスに応じて小さなデータ・セットへの大規模なデータセットを必要としています。クエリクエリは、WHERE句の式で必要とされる指定されたパーティションを選択すると、このような問合せの効率は多くのことを改善します。
2.6.1基本的な操作のパーティションテーブル
1。パーティションテーブルの導入(日付に従って、ログ管理の必要性)
/user/hive/warehouse/log_partition/20170702/20170702.log
/user/hive/warehouse/log_partition/20170703/20170703.log
/user/hive/warehouse/log_partition/20170704/20170704.log
2。パーティションテーブルの構文を作成します。
create table dept_partition(
deptno int, dname string, loc string
)
partitioned by (month string)
row format delimited fields terminated by '\t';
3。パーティションテーブルにデータをロードします
load data local inpath '/opt/dept.txt' into table default.dept_partition partition(month='201709');
load data local inpath '/opt/dept.txt' into table default.dept_partition partition(month='201708');
load data local inpath '/opt/dept.txt' into table default.dept_partition partition(month='201707');
4。照会のパーティションテーブルのデータ
単一パーティションのクエリ
select * from dept_partition where month='201709';
マルチパーティション共同問い合わせ
select * from dept_partition where month='201709'
union
select * from dept_partition where month='201708'
union
select * from dept_partition where month='201707';
5。地区を追加し
、単一のパーティションを作成します
alter table dept_partition add partition(month='201706') ;
複数のパーティションを作成します。
alter table dept_partition add partition(month='201705') partition(month='201704');
6。削除パーティション
の削除個々のパーティション
alter table dept_partition drop partition (month='201704');
削除複数のパーティション(プラス*** NOTE ***)
alter table dept_partition drop partition (month='201705'), partition (month='201706');
7。どのように多くのパーティションのパーティションテーブルを見ます
show partitions dept_partition;
8。パーティションテーブルの構造を見ます
desc formatted dept_partition;
2.6.2パーティションテーブル(注)
1。セカンダリ・パーティション表の作成
create table dept_partition2
(deptno int, dname string, loc string)
partitioned by (month string, day string)
row format delimited fields terminated by '\t';
2。通常の負荷データ
セカンダリパーティションテーブルにデータをロードする(1)
load data local inpath '/opt/dept.txt' into table
default.dept_partition2 partition(month='201709', day='13');
(2)分割されたデータのクエリ
select * from dept_partition2 where month='201709' and day='13';
3。データを直接ディレクトリパーティション、パーティションテーブルにアップロードされたデータは、関連する3つの方法で生成させている
(1)の方法:修理アップロードデータの後に
アップロードデータ
dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=201709/day=12;
dfs -put /opt/dept.txt /user/hive/warehouse/dept_partition2/month=201709/day=12;
クエリデータ(クエリデータだけでアップロードすることはできません)
select * from dept_partition2 where month='201709' and day='12';
修理オーダーを実行
msck repair table dept_partition2;
再びクエリデータ
select * from dept_partition2 where month='201709' and day='12';
(2)第二の方法:データ・パーティションをアップロードした後に追加され
たデータをアップロードします
dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=201709/day=11;
dfs -put /opt/dept.txt /user/hive/warehouse/dept_partition2/month=201709/day=11;
パーティションの実行を追加
alter table dept_partition2 add partition(month='201709',day='11');
クエリデータ
select * from dept_partition2 where month='201709' and day='11';
(3)3つの方法:フォルダを作成した後、パーティションにデータをロード
ディレクトリを作成するために
dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=201709/day=10;
アップロードデータ
load data local inpath '/opt/dept.txt' into table dept_partition2 partition(month='201709',day='10');
クエリデータ
select * from dept_partition2 where month='201709' and day='10';
2.7テーブルを変更します
2.7.1名前の変更表
1。文法
ALTER TABLE table_name RENAME TO new_table_name;
2。実用的な操作ケース
alter table dept_partition2 rename to dept_partition3;
2.7.2追加、変更、およびパーティションテーブルが削除
2.6.1パーティションテーブルの基本的な操作を参照してください。
2.7.3追加/修正/列置換情報
1。構文
更新カラム
ALTER TABLEテーブル名CHANGE [COLUMN] col_old_name
付加および置換列
ALTERテーブルtable_nameのADD | COLUMNS REPLACE(
注:ADDは、新規の代表でありますフィールドによって、カラム(カラムの前にパーティション)の背後の位置にあるすべてのフィールドは、すべてのフィールドを示す置換テーブルで置き換えます。
2。体操ケース
(1)のルックアップテーブル構造
desc dept_partition;
(2)は、列を追加します
alter table dept_partition add columns(deptdesc string);
(3)ルックアップテーブルの構造
desc dept_partition;
(4)更新列
alter table dept_partition change column deptdesc desc int;
(5)ルックアップテーブルの構造
desc dept_partition;
(6)カラムを取り付け
alter table dept_partition replace columns(deptno string, dname string, loc string);
(7)ルックアップテーブル構造
desc dept_partition;
2.8削除テーブル
drop table dept_partition;