0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

hiveでcsvやtsvをテーブル化する

Last updated at Posted at 2022-10-10

はじめに

hiveでサクっとcsvやtsvをテーブル化したい!という時にみる記事です。

目次

  • csv,tsvの準備
  • create tableする
  • hdfsにデータを投下
  • 備考

csv,tsvの準備

データを準備します。

cat data.csv

id,name,age
1,tarou,31
2,jirou,28
3,saburou,25

cat data.tsv

id	name	age
1	tarou	31
2	jirou	28
3	saburou	25

create tableする

locationをhdfsの任意のフォルダに指定して、createします。区切り文字の設定は投下するデータに合わせて変えましょう。
(FIELDS TERMINATED BY ...の箇所を変更しているのみです。)

csvを入れるテーブルの場合

CREATE TABLE testdb.testtable_csv 
( id INT,
  name STRING,
  age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/testfolder/testtable_csv/'
--任意のhdfs上のフォルダを指定(存在しないフォルダの場合、自動生成されます。)
TBLPROPERTIES
("skip.header.line.count"="1",
"serialization.null.format"="NULL")
;

tsvを入れるテーブルの場合

CREATE TABLE testdb.testtable_tsv 
( id INT,
  name STRING,
  age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/testfolder/testtable_tsv/'
--任意のhdfs上のフォルダを指定(存在しないフォルダの場合、自動生成されます。)
TBLPROPERTIES
("skip.header.line.count"="1",
"serialization.null.format"="NULL")
;

hdfsにデータを投下

先程createしたテーブルのlocationにデータを入れます。

hdfs dfs -put ./data.csv /testfolder/testtable_csv 
hdfs dfs -put ./data.tsv /testfolder/testtable_tsv 

データを追加する場合も、そのままputで同じロケーションに入れればOKです。

hdfs dfs -put ./data2.csv /testfolder/testtable_csv 
hdfs dfs -put ./data2.tsv /testfolder/testtable_tsv 

既存データを別データに置換したい場合、-fオプションを使い、パス名に置換したいファイル名を指定してputします。
(こちらでは、data.csv、data.tsvをdata3.csv、data3.tsvに置換しています。)

hdfs dfs -put -f ./data3.csv /testfolder/testtable_csv/data.csv
hdfs dfs -put -f ./data3.tsv /testfolder/testtable_tsv/data.tsv

確認

selectなどでテーブルにデータが追加されているか確認します。

hive> select * from testdb.testtable_csv limit 10;

備考

データのファイル容量が大きい場合、hdfs dfs -putコマンドの実行にかなり時間がかかってしまうので、大きいデータを扱う際はLOAD文を使ったり、ファイルをsplitコマンドで分割してシェルスクリプトなどで順次投下したら良いかもと思いました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?