内容サマリ
Hive テーブルを、テキストファイルから作る方法の備忘録である。
テキストファイルでHiveテーブルを作る手順
(1) テキストファイル(TSV形式)を準備する。カラム構造はすでに決まっているとする。
(2) hadoop コマンドでファイルをクラスタ上にアップロードする。
# コマンド例
hadoop fs -copyFromLocal some_tsv_file.tsv hdfs:///my_tmp/sample_dir/some_tsv_file.tsv
(3) hive テーブルをcreate文で作る。
CREATE TABLE IF NOT EXISTS some_scheme.some_table_by_text (
col_01 string,
col_02 string,
col_03 string
)
ROW FORMAT DELIMITED
FIELDS TERNIMATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
(4) hiveに LOAD DATA INTO 文でデータを流し込む
LOAD DATA INPATH 'hdfs:///my__tmp/sample_dir/some_tsv_file.tsv' OVERWRITE INTO TABLE some_scheme.some_table_by_text
新規にテキストファイル(TSV形式)からhiveテーブルを作るときは上記の方法となる。
既存のHDFS上のファイルを実態とするテーブルの作り方
(1) 既存のテキストファイルが、 hdfs:///my_temp/hive/some_table/some_sample.tsv にあるとする。
(2) LOCATION を指定して、CREATE文を発行する。
LOCATION で指定するのはディレクトリであることに注意。
指定したディレクトリの中にあるテキストファイルをテーブルの実態として適用する。
CREATE TABLE IF NOT EXISTS some_scheme.some_table_by_text_02 (
col_01 string,
col_02 string,
col_03 string
)
ROW FORMAT DELIMITED
FIELDS TERNIMATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/my_temp/hive/some_table/'
以上でHiveテーブルが出来上がる。
テーブルを更新したいときは、LOCATION で指定したディレクトリにあるテキストファイルを差し替えればよい。
# ファイル差し替えの例
# 新しいファイルが /my_temp/cache/new_text.tsv であるとする。
hadoop fs -rm /my_temp/hive/some_table/some_sample.tsv
hadoop fs -mv /my_temp/cache/new_text.tsv /my_temp/hive/some_table/some_sample.tsv