LoginSignup
2
1

More than 5 years have passed since last update.

[学習備忘録] hive テーブル構築 by テキストファイル

Posted at

内容サマリ

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
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1