Hiveでのデータベース、テーブルの操作
8246 ワード
Hiveを適用する前に、まずHive環境を構築し、Hiveの構築について参考にする前の構築ドキュメント
http://blog.csdn.net/liulihui1988/article/details/74351532
Hive公式アプリケーションドキュメント
https://cwiki.apache.org/confluence/display/Hive/LanguageManual
データ定義言語DDL
1、Create Database
Hiveでのデータベースの作成はリレーショナル・データベースと似ています.create datebaseで作成します.
hiveでの操作
2、Drop Database
3、Alter Database
4、Use Database
Create/Drop/Truncate Table
Hiveでテーブルを作成するのは、リレーショナル・データベースでのテーブルの作成と似ています.Hiveでのテーブルのフィールドは、元のファイルのフォーマットと一致する必要があります.元のファイルはHSFS上に存在します.
1、create table
備考:FIELDS TERMINTED BY','は元のファイルのフォーマットが','で区切られていることを示す
テストemp_の作成dataファイル、t_のインポートEmpテーブル
Hiveデータのインポート
Hiveは変換せず、データをテーブルにロードします.ロード操作は現在、純粋なコピー/移動操作であり、実際にはHive位置対応テーブルに入ります.
注記:[LOCAL]ローカルファイル、'filepath'パス
テストデータインポートテーブルt_Empで
このとき、Hadoop HDFSの作業ディレクトリを見てみると、自動的にt_が生成されることがわかります.Empファイル
/user/hive/warehouse/t_Emp,Hiveデータをt_にインポートEmpテーブル、(hadoop環境変数)Hadoop HDFS作業ディレクトリが自動的に見つかり、作業ディレクトリが作成されます.
select文クエリー統計の実行
Hadoop job information Mapeduce実行結果
データ操作言語DML
1、ファイルを表にロード(ローカルインポート)
Hiveは変換せず、データをテーブルにロードします.ロード操作は現在純粋なコピー/移動操作であり、実際にはHive位置対応テーブルに入るHiveあるテーブルからHDFS指定パス にエクスポート
2、Hiveテーブルにデータを挿入する
3、Hiveテーブルデータの更新
4、Hiveテーブルデータの削除
5、クエリー挿入Hiveデータテーブルdept_count(パーティションなし)
6、クエリー挿入Hiveデータテーブルdept_count(パーティションあり)
詳細は公式文書を参照
https://cwiki.apache.org/confluence/display/Hive/LanguageManual
http://blog.csdn.net/liulihui1988/article/details/74351532
Hive公式アプリケーションドキュメント
https://cwiki.apache.org/confluence/display/Hive/LanguageManual
データ定義言語DDL
1、Create Database
Hiveでのデータベースの作成はリレーショナル・データベースと似ています.create datebaseで作成します.
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
hiveでの操作
hive> create database hive
2、Drop Database
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
3、Alter Database
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...)
4、Use Database
USE database_name;
USE DEFAULT;
Create/Drop/Truncate Table
Hiveでテーブルを作成するのは、リレーショナル・データベースでのテーブルの作成と似ています.Hiveでのテーブルのフィールドは、元のファイルのフォーマットと一致する必要があります.元のファイルはHSFS上に存在します.
1、create table
create table t_emp(
id int,
name string,
age int,
dept_name string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
備考:FIELDS TERMINTED BY','は元のファイルのフォーマットが','で区切られていることを示す
テストemp_の作成dataファイル、t_のインポートEmpテーブル
Hiveデータのインポート
Hiveは変換せず、データをテーブルにロードします.ロード操作は現在、純粋なコピー/移動操作であり、実際にはHive位置対応テーブルに入ります.
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
注記:[LOCAL]ローカルファイル、'filepath'パス
テストデータインポートテーブルt_Empで
load data local inpath '/root/emp_data' into table t_emp;
このとき、Hadoop HDFSの作業ディレクトリを見てみると、自動的にt_が生成されることがわかります.Empファイル
/user/hive/warehouse/t_Emp,Hiveデータをt_にインポートEmpテーブル、(hadoop環境変数)Hadoop HDFS作業ディレクトリが自動的に見つかり、作業ディレクトリが作成されます.
select文クエリー統計の実行
hive> select count(*) from t_emp where dept_name = ' ' group by dept_name;
Hadoop job information Mapeduce実行結果
データ操作言語DML
1、ファイルを表にロード(ローカルインポート)
Hiveは変換せず、データをテーブルにロードします.ロード操作は現在純粋なコピー/移動操作であり、実際にはHive位置対応テーブルに入る
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
export table t_emp to '/usr/input/emp.txt';
2、Hiveテーブルにデータを挿入する
CREATE TABLE students (name VARCHAR(64), age INT, gpa DECIMAL(3, 2))
CLUSTERED BY (age) INTO 2 BUCKETS STORED AS ORC;
INSERT INTO TABLE students
VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32);
3、Hiveテーブルデータの更新
UPDATE tablename SET column = value [, column = value ...] [WHERE expression]
4、Hiveテーブルデータの削除
DELETE FROM tablename [WHERE expression]
5、クエリー挿入Hiveデータテーブルdept_count(パーティションなし)
create table dept_count(
dname string,
num int
);
insert into table dept_count select dept_name,count(1) from t_emp group by dept_name;
6、クエリー挿入Hiveデータテーブルdept_count(パーティションあり)
create table dept_count_1(
num int
) partitioned by (dname string);
insert into table dept_count_1 partition (dname = ' ') select count(*) from t_emp where dept_name = ' ' group by dept_name;
詳細は公式文書を参照
https://cwiki.apache.org/confluence/display/Hive/LanguageManual