■ はじめに
https://dk521123.hatenablog.com/entry/2020/11/03/000000
の続き。 Hive の テーブルデータ を GZIP にするなどを行ったので 知識を整理しておく
目次
【1】テーブルデータを圧縮する 1)サンプル 【2】ファイルフォーマットを指定する 1)STORED AS <FORMAT> 2)サンプル
【1】テーブルデータを圧縮する
以下を指定すればいい。 他にも、BZIP2 / Snappy / LZ4 などが指定できる。 詳細は、以下のサイトを参照のこと。
https://blog.amedama.jp/entry/2018/02/15/234725
set hive.exec.compress.output=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; ※ プロパティに関する詳細な説明は、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2020/09/19/152136
1)サンプル
-- GZIP形式で圧縮する set hive.exec.compress.output=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; DROP TABLE IF NOT EXISTS sample_db.sample_table; CREATE TABLE sample_db.sample_table ROW FORMAT DELIMITED FIELDS TEMINATED BY '\001' STORED AS TEXTFILE AS SELECT * FROM sample_db.sample_table_temp;
出力結果
# GZIPとして保存されている 0000_0.gz 0000_1.gz ...
【2】ファイルフォーマットを指定する
『STORED AS <フォーマット>』で 例えば、パーケットを指定(STORED AS PARQUET)すれば データを圧縮できる
1)STORED AS
より抜粋 * TEXTFILE:プレインテキストで保存 * SEQUENCEFILE:SequenceFile(シーケンスファイル) 形式で保存 * ORC:ORC(Optimized Row Columnar) 形式で保存 * PARQUET:パーケット形式で圧縮 * AVRO:AVRO(アブロ、バイナリ)形式で保存 * RCFILE:RCFile形式で保存 * JSONFILE:JSON形式で保存(Hive 4.0.0 以降) etc...
2)サンプル
CREATE TABLE xxx ( id BIGINT ) -- PARQUET形式として指定 -- (列志向・カラムナフォーマット: Parquet, ORC / TEXTFILE etc) STORED AS PARQUET -- 圧縮形式:snappy TBLPROPERTIES("parquet.compression"="SNAPPY") ;
参考文献
https://qiita.com/yskazuma/items/db543d45d32013cfcbb9
関連記事
Hive / HiveQL ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2019/11/25/235219
Hive / HiveQL ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/25/231235
Hive / HiveQL ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/06/02/183823
Hive / HiveQL ~ テーブル作成 ~
https://dk521123.hatenablog.com/entry/2020/11/03/000000
Hive / HiveQL ~ 設定プロパティ ~
https://dk521123.hatenablog.com/entry/2020/09/19/152136