S-JIS[2011-08-09/2012-04-29] 変更履歴

HiveQL

HiveQL(HiveのSQLっぽい独自言語)のメモ。


HiveQLの構文

HiveQLの命令はセミコロン「;」を末尾に付けて実行する。
(showやdescribeといった命令やcreate文・select文など、全て)

命令は大文字でも小文字でも認識される。

コメントは「-- 〜」。[2011-12-24]

命令 SQL類似 説明



SHOW TABLES   テーブル一覧を表示する。
正規表現でテーブル名を指定すると、それにマッチするテーブルだけ表示される。
show tables;
show tables 'test.*';
CREATE TABLE CREATE TABLE テーブルを作成する。
externalが付いていないと、Hiveが管理しているディレクトリー(本来はHDFS)内にファイルが作られる。
externalが付いていると、指定したディレクトリー(本来はHDFS)内にファイルが作られる。
create table test1(
  col1 string
);
create external table test2(
  data1 string
)
location 'C:/cygwin/home/hishidama/hive/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;
desc extended test1;
desc formatted test1;




LOAD DATA LOCAL   ファイルからテーブルにデータをロードする。
「overwrite」を付けると(前のデータを消して)上書きする。
付けないと、データ追加になる。
load data local inpath'C:/cygwin/tmp/test1.txt'
overwrite into table test1;
INSERT OVERWRITE   他のテーブルからデータをコピー(上書き)する。 insert overwrite table test2
select * from test1;
INSERT INTO INSERT INTO テーブル SELECT 他のテーブルからデータを追加する命令は無い。
(Hive0.8から加わる模様)
 
  INSERT INTO テーブル VALUES 値を直接指定してテーブルへ追加する命令は無い。
INSERT〜SELECTを利用する。
 




SELECT * FROM SELECT * FROM 全項目のデータを取得する。
「LIMIT」で取得件数を絞れる。
HiveQLでは、FROMを先に持ってくることも出来る。
select * from test1;
select * from test1 limit 10;
from test1 select *;
SELECT 項目… FROM SELECT 項目… FROM 項目を指定すると、MapReduceが実行されて、データを取得する。 select col1 from test1;
TRANSFORM USING   スクリプトによる処理を実行する。
(標準入力にデータが渡され、標準出力からデータを受け取る)
参考: LanguageManual Transform
select transform(col1)
using 'スクリプト' as word1
from test1;
FROM テーブル MAP USING   スクリプトによるMap処理を実行する。 from test1 map col1
using 'スクリプト' as word1;
FROM テーブル REDUCE USING   スクリプトによるReduce処理を実行する。 from test1 reduce col1
using 'スクリプト' as word1;




  UPDATE
DELETE
TRUNCATE
HiveQLにはテーブルのデータを直接更新する命令は無い。  

SHOW FUNCTIONS   関数(組込関数と現在読み込まれているユーザー定義関数)の一覧を表示する。
正規表現で関数名のパターンを指定可能。
show functions;
show functions 's.*';
DESCRIBE FUNCTION   関数の情報を表示する。
「EXTENDED」を付けると使用例なども表示される。
desc function split;
desc function extended split;

${env:変数名}」で環境変数を取得することが出来る。(by『HADOOP HACKS』p.160)[2012-04-29]

hive> select * from test t where t.name = '${env.USER}';

Hive目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま