HiveQL(HiveのSQLっぽい独自言語)のメモ。
HiveQLの命令はセミコロン「;
」を末尾に付けて実行する。
(showやdescribeといった命令やcreate文・select文など、全て)
命令は大文字でも小文字でも認識される。
コメントは「-- 〜」。[2011-12-24]
命令 | SQL類似 | 説明 | 例 | |
---|---|---|---|---|
テ ー ブ ル |
SHOW TABLES | テーブル一覧を表示する。 正規表現でテーブル名を指定すると、それにマッチするテーブルだけ表示される。 |
show tables; |
|
CREATE TABLE | CREATE TABLE | テーブルを作成する。 externalが付いていないと、Hiveが管理しているディレクトリー(本来はHDFS)内にファイルが作られる。 externalが付いていると、指定したディレクトリー(本来はHDFS)内にファイルが作られる。 |
create table test1( |
|
create external table test2( |
||||
CREATE TABLE AS SELECT | CREATE TABLE AS SELECT | 別のテーブルから新しいテーブルを作成する。 | create table test3 as select * from test1; |
|
CREATE TABLE LIKE [2011-08-10] |
別のテーブルの定義を元に新しいテーブルを作成する。 SQLの常套手段と同じくAS SELECTで「LIMIT 0」を指定しても定義だけコピーされるが MapReduceが実行されるので遅い。 |
create table test3 like test1; |
||
create table test3 as select * from test1 limit 0; |
||||
DROP TABLE | DROP TABLE | テーブルを削除する。 external付きで作られたテーブルは、元のファイルは消されない。 externalなしで作られたテーブルは、データごと消える。 |
drop table test1; |
|
DESCRIBE | DESCRIBE | テーブルの情報を表示する。 省略して「DESC」でも可。 「EXTENDED」を付けると詳細情報まで表示される。 「FORMATTED」を付けると詳細情報を整形して表示する。 |
desc test1; |
|
デ ー タ 挿 入 |
LOAD DATA LOCAL | ファイルからテーブルにデータをロードする。 「overwrite」を付けると(前のデータを消して)上書きする。 付けないと、データ追加になる。 |
load data local inpath'C:/cygwin/tmp/test1.txt' |
|
INSERT OVERWRITE | 他のテーブルからデータをコピー(上書き)する。 | insert overwrite table test2 |
||
INSERT INTO | INSERT INTO テーブル SELECT | 他のテーブルからデータを追加する命令は無い。 (Hive0.8から加わる模様) |
||
INSERT INTO テーブル VALUES | 値を直接指定してテーブルへ追加する命令は無い。 INSERT〜SELECTを利用する。 |
|||
デ ー タ 取 得 |
SELECT * FROM | SELECT * FROM | 全項目のデータを取得する。 「LIMIT」で取得件数を絞れる。 HiveQLでは、FROMを先に持ってくることも出来る。 |
select * from test1; |
SELECT 項目… FROM | SELECT 項目… FROM | 項目を指定すると、MapReduceが実行されて、データを取得する。 | select col1 from test1; |
|
TRANSFORM USING | スクリプトによる処理を実行する。 (標準入力にデータが渡され、標準出力からデータを受け取る) 参考: LanguageManual Transform |
select transform(col1) |
||
FROM テーブル MAP USING | スクリプトによるMap処理を実行する。 | from test1 map col1 |
||
FROM テーブル REDUCE USING | スクリプトによるReduce処理を実行する。 | from test1 reduce col1 |
||
デ ー タ 更 新 |
UPDATE DELETE TRUNCATE |
HiveQLにはテーブルのデータを直接更新する命令は無い。 | ||
関 数 |
SHOW FUNCTIONS | 関数(組込関数と現在読み込まれているユーザー定義関数)の一覧を表示する。 正規表現で関数名のパターンを指定可能。 |
show functions; |
|
DESCRIBE FUNCTION | 関数の情報を表示する。 「EXTENDED」を付けると使用例なども表示される。 |
desc function split; |
「${env:変数名}
」で環境変数を取得することが出来る。(by『HADOOP HACKS』p.160)[2012-04-29]
hive> select * from test t where t.name = '${env.USER}';