hive
hiveql

HiveQLのよく使うコマンドまとめ

More than 1 year has passed since last update.

頻繁に使うものではないがたまに利用することがあり毎度調べ直しをしているのでまとめておく。

テーブルを作成する

MySQLと違って対象のファイルがただのテキストファイルになるので、要はカラムに対してサイズの指定がなかったり、フィールド毎の区切り文字や、行毎の区切り文字を指定することができるようになっている。CSVをHiveで処理したり、それ以外のフォーマットのテキストファイルもこれによって柔軟に処理できる。

CREATE TABLE hoge (
  a STRING,
  b INT,
  c STRING,
  e INT 
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
;

CREATE EXTERNAL TABLEを使えば既に存在するファイルを対象にしてHiveテーブルを構築できる。パーティション自体は指定することで、検索対象を分離したりすることができるので、適切にパーティションを区切っておくことで必要な情報を得るためのMapReduceの処理時間やコストを短縮することができる。

CREATE EXTERNAL TABLE hoge (
  a STRING,
  b INT,
  c STRING,
  e INT 
)
PARTITIONED BY(dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION '/path/to/dir'
;

パーティションを指定したSQLを発行する例

SELECT * FROM hoge WHERE dt="hogehoge" LIMIT 10;

データベース変更

USE hoge

テーブル一覧

SHOW TABLES;

テーブル削除

TABLE DROP hoge;

テーブルを空にする

削除して作りなおしているような挙動をしている

TRUNCATE hoge;

パーティションを追加する

ALTER TABLE hoge ADD PARTITION(dt='hogehoge');

パーティションを削除する

ALTER TABLE hoge DROP IF EXISTS PARTITION(dt='hogehoge');