Hiveでのデータベース、テーブルの操作

8246 ワード

Hiveを適用する前に、まずHive環境を構築し、Hiveの構築について参考にする前の構築ドキュメント
http://blog.csdn.net/liulihui1988/article/details/74351532
Hive公式アプリケーションドキュメント
https://cwiki.apache.org/confluence/display/Hive/LanguageManual
データ定義言語DDL
Hive中对数据库,表的操作_第1张图片
1、Create Database
Hiveでのデータベースの作成はリレーショナル・データベースと似ています.create datebaseで作成します.
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name  

hiveでの操作
hive> create database hive  

Hive中对数据库,表的操作_第2张图片
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中对数据库,表的操作_第3张图片
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;

Hive中对数据库,表的操作_第4张图片
このとき、Hadoop HDFSの作業ディレクトリを見てみると、自動的にt_が生成されることがわかります.Empファイル
/user/hive/warehouse/t_Emp,Hiveデータをt_にインポートEmpテーブル、(hadoop環境変数)Hadoop HDFS作業ディレクトリが自動的に見つかり、作業ディレクトリが作成されます.
Hive中对数据库,表的操作_第5张图片
select文クエリー統計の実行
hive> select count(*) from t_emp where dept_name = '   ' group by dept_name;

Hadoop job information Mapeduce実行結果
Hive中对数据库,表的操作_第6张图片
データ操作言語DML
1、ファイルを表にロード(ローカルインポート)
Hiveは変換せず、データをテーブルにロードします.ロード操作は現在純粋なコピー/移動操作であり、実際にはHive位置対応テーブルに入る
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
  • HiveあるテーブルからHDFS指定パス
  • にエクスポート
    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