Hadoop+Hive検証環境を構築してみる:Hive――RDB使いのためのHadoopガイド(前編)(3/3 ページ)
Hadoop HiveはHadoop上でSQLライクなクエリ操作が可能なDWH向けのプロダクトです。SQLに近い操作が可能なため、HBaseよりもデータベースに慣れ親しんだみなさんには使い勝手がいいかもしれません。本稿ではこのHiveの使い方とレビューを行っていきます。
Hiveの基本的な使い方
ここでは、Hiveの基本的な使い方を説明します。はじめにテーブルの作成とデータの読み込みを説明し、次に検索と保存について説明します。
Hiveの起動と終了
ここでは、実際の説明に先立ってHiveの操作方法を示します。
Hiveはインタプリタ「hive」で操作します。起動方法は次のとおりです。
hiveuser> $HADOOP_HOME/contrib/hive/bin/hive hive>
終了は「exit;」を入力します。
hive> exit;
テーブルの作成とデータの読み込み:CREATE TABLEとLOAD DATA
最初にテーブル作成のためのCREATE TABLE文を説明します。詳細な文法は以下のURLを参照してください。
・CREATE TABLEの詳細な文法チュートリアル:Apacheプロジェクトwiki
以下では書式の概略と指定できるデータ型を示しておきます。
CREATE [EXTERNAL] TABLE [テーブル名] (カラム名 data_type [カラムコメント], カラム名 data_type [カラムコメント], ……) [PARTITIONED BY (カラム名1 data_type 1 [カラムコメント1], カラム名2 data_type 2 [カラムコメント2],……)] [CLUSTERED BY (カラム名1, カラム名2,……) [SORTED BY (カラム名1, ……)] INTO num_buckets BUCKETS] [ROW FORMAT row_format ] [STORED AS file_format ] [LOCATION hdfsのパス]
| data_type | primitive_type | TINYINT |
|---|---|---|
| INT | ||
| BIGINT | ||
| BOOLEAN | ||
| FLOAT | ||
| DOUBLE | ||
| DATE | ||
| DATETIME | ||
| TIMESTAMP | ||
| STRING | ||
| array_type | ARRAY < primitive_type > | |
| map_type | MAP < primitive_type, primitive_type > | |
| row_format | DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char] [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] SERIALIZER serde_name [WITH PROPERTIES property_name=property_value, property_name=property_value, ...] |
|
| file_format | SEQUENCEFILE | |
| TEXTFILE | ||
| 指定できるデータ型一覧 | ||
ここでは、pref.csvファイルのデータを保存するテーブル「pref」を定義します。
テーブル「pref」の定義
hive> CREATE TABLE pref (id int, pref STRING)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
> LINES TERMINATED BY '\n';
OK
Time taken: 10.813 seconds
通常のCREATE TABLE文との違いは、「ROW FORMAT DELIMITED FIELDS 〜」以下の部分です。これは、次に説明するLOAD DATA文のためのオプションで、読み込むデータファイルpref.csvの区切り文字(ここでは「 , 」)と改行文字(ここでは「\n」)を指定しています。
1,北海道 2,青森県 3,岩手県 4,宮城県 5,秋田県 6,山形県 7,福島県 …略…
では、実際にデータファイルpref.csvを読み込んでみましょう。LOAD DATA文の文法は以下のとおりです。
LOAD DATA [LOCAL] INPATH '/path/to/file' [OVERWRITE] INTO TABLE table_name [partition_spec]
hive> LOAD DATA LOCAL INPATH '/home/hiveuser/localfiles/pref.csv'
> OVERWRITE INTO TABLE pref;
Copying data from file:/home/hiveuser/localfiles/pref.csv
Loading data to table pref
OK
Time taken: 3.362 seconds
以上でテーブルprefにデータが読み込まれました。
ここまでで、基本的なHiveの操作が理解できたのではないかと思います。後編では、今回構築した環境を基に、より複雑に定義したテーブルの操作やHadoopならではの実践的な使い方を見ていきます。
Copyright © ITmedia, Inc. All Rights Reserved.