[[194194]] 概要 正しいファイル タイプと圧縮タイプ (Textfile+Gzip、SequenceFile+Snappy など) が構成されている限り、Hive は期待どおりにデータを読み取って解析し、SQL 関数を提供できます。 SequenceFile 自体の構造はコンテンツを圧縮するように設計されています。したがって、SequenceFile ファイルの圧縮では、最初に SequenceFile ファイルを生成してからファイルを圧縮する必要はありません。代わりに、SequenceFile ファイルを生成するときに、コンテンツ フィールドが圧縮されます。最終圧縮後も、外部には SequenceFile として表示されます。 RCFile、ORCFile、Parquet、Avro は、SequenceFile と同じ方法で圧縮を処理します。 ファイル形式 - テキストファイル
- シーケンスファイル
- RCファイル
- ORCファイル
- 寄木細工
- アブロ
圧縮アルゴリズムコーデック テキストファイル -
- 外部テーブルstudent_text (id 文字列、 name文字列)を作成します。
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- テキストファイルとして保存されます。
-
- INSERT OVERWRITE TABLE student_text SELECT * FROM student;
生成されたデータ ファイルの形式は、圧縮されていないテキスト ファイルであることがわかります。 - hdfs dfs -cat /ユーザー/hive/warehouse/student_text/000000_0
-
- 1001810081,チェヨ
- 1001810082,pku
- 1001810083,ロッキー
- 1001810084、スティーブン
- 2002820081、SQL
- 2002820082、こんにちは
- 2002820083,ヒジ
- 3001810081、ああああああ
- 3001810082、あぶぶぶ
テキストファイル、DEFLATE圧縮 -
- 作成する テーブルstudent_text_def (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- テキストファイルとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;
-
- INSERT OVERWRITE TABLE student_text_def SELECT * FROM student;
-
- student_text_defから*を選択します。
データ ファイルを見ると、データ ファイルが複数の .deflate ファイルであることがわかります。 - hdfs dfs -ls /ユーザー/hive/warehouse/student_text_def/
- -rw-r
- -rw-r
- -rw-r
テキストファイル、Gzip圧縮 -
- 作成する テーブルstudent_text_gzip (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- テキストファイルとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
-
- INSERT OVERWRITE TABLE student_text_gzip SELECT * FROM student;
-
- student_text_gzipから*を選択します。
データ ファイルを確認すると、データ ファイルが複数の .gz ファイルであることがわかります。 .gz ファイルを解凍すると、プレーンテキストが表示されます。 - hdfs dfs -ls /ユーザー/hive/warehouse/student_text_gzip/
- -rw-r
- -rw-r
- -rw-r
テキストファイル、Bzip2 圧縮 -
- 作成する テーブルstudent_text_bzip2 (id 文字列、名前 文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- テキストファイルとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.BZip2Codec;
-
- INSERT OVERWRITE TABLE student_text_bzip2 SELECT * FROM student;
-
- student_text_bzip2から*を選択します。
データ ファイルを表示すると、データ ファイルが複数の .bz2 ファイルであることがわかります。 .bz2 ファイルを解凍すると、プレーンテキストが表示されます。 - hdfs dfs -ls /ユーザー/hive/warehouse/student_text_bzip2
- -rw-r
- -rw-r
- -rw-r
テキストファイル、LZO圧縮 -
- 作成する テーブルstudent_text_lzo (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- テキストファイルとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力.compression.codec=com.hadoop.compression.lzo.LzopCodec;
-
- INSERT OVERWRITE TABLE student_text_lzo SELECT * FROM student;
-
- student_text_lzoから*を選択します。
データ ファイルを確認すると、データ ファイルが複数の .lzo ファイルに圧縮されていることがわかります。 .lzo ファイルを解凍すると、プレーンテキストが表示されます。 テストされていません。lzop ライブラリをインストールする必要があります。 テキストファイル、lz4 圧縮 -
- 作成する テーブルstudent_text_lz4 (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- テキストファイルとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.Lz4Codec;
-
- INSERT OVERWRITE TABLE student_text_lz4 SELECT * FROM student;
データ ファイルを見ると、データ ファイルが複数の .lz4 ファイルに圧縮されていることがわかります。 cat を使用して .lz4 ファイルを表示すると、圧縮されたテキストであることがわかります。 - hdfs dfs -ls /ユーザー/hive/warehouse/student_text_lz4
- -rw-r
- -rw-r
- -rw-r
テキストファイル、Snappy圧縮 -
- 作成する テーブルstudent_text_snappy (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- テキストファイルとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.compress.map.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力。圧縮 = org.apache.hadoop.io.compress.SnappyCodec;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
- io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodecを設定します。
-
- INSERT OVERWRITE TABLE student_text_snappy SELECT * FROM student;
-
- student_text_snappyから*を選択します。
データ ファイルを確認すると、データ ファイルが複数の .snappy 圧縮ファイルであることがわかります。 cat を使用して .snappy ファイルを表示すると、圧縮されたテキストであることがわかります。 - hdfs dfs -ls /ユーザー/hive/warehouse/student_text_snappy
- 3 件のアイテムが見つかりました
- -rw-r
- -rw-r
- -rw-r
シーケンスファイル シーケンスファイル、DEFLATE圧縮 -
- 作成する テーブルstudent_seq_def (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- シーケンスファイルとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;
-
- INSERT OVERWRITE TABLE student_seq_def SELECT * FROM student;
-
- student_seq_defから*を選択します。
データ ファイルを表示します。これは暗号テキスト ファイルです。 - hdfs dfs -ls /ユーザー/hive/warehouse/student_seq_def/
- -rw-r
シーケンスファイル、Gzip圧縮 -
- 作成する テーブルstudent_seq_gzip (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- シーケンスファイルとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
-
- INSERT OVERWRITE TABLE student_seq_gzip SELECT * FROM student;
-
- student_seq_gzipから*を選択します。
データ ファイルを確認してください。これは暗号テキスト ファイルであり、gzip で解凍することはできません。 - hdfs dfs -ls /ユーザー/hive/warehouse/student_seq_gzip/
- -rw-r
RCFILE RCFILE、Gzip 圧縮 - 作成する テーブルstudent_rcfile_gzip (id 文字列、名前 文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- RCFILEとして保存されます。
-
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
-
- INSERT OVERWRITE TABLE student_rcfile_gzip SELECT id, name 学生より;
-
- student_rcfile_gzipから*を選択します。
ORCファイル ORCFile には圧縮形式を設定するための独自のパラメータがあり、通常は上記の Hive パラメータを使用して圧縮パラメータを設定することはありません。 ORCFile、ZLIB 圧縮 -
- 作成する テーブルstudent_orcfile_zlib (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- ORCFILE TBLPROPERTIES ( "orc.compress" = "ZLIB" )として保存されます。
-
-
- INSERT OVERWRITE TABLE student_orcfile_zlib SELECT id, name 学生より;
-
- student_orcfile_zlibから*を選択します。
ORCFILE、Snappy 圧縮 -
- 作成する テーブルstudent_orcfile_snappy2 (id 文字列、名前 文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- ORCFILE TBLPROPERTIES ( "orc.compress" = "SNAPPY" )として保存されます。
-
-
- INSERT OVERWRITE TABLE student_orcfile_snappy2 SELECT id, name 学生より;
-
- student_orcfile_snappy2から*を選択します。
以下の方法は一般的には使用されません。次の圧縮方法では、上記の同じタイプの圧縮 (SNAPPY) とは異なる結果になります。具体的な理由についてはさらに調査する必要がある。 -
- 作成する テーブルstudent_orcfile_snappy (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- ORCFILEとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.compress.map.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力。圧縮 = org.apache.hadoop.io.compress.SnappyCodec;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
- io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodecを設定します。
-
- INSERT OVERWRITE TABLE student_orcfile_snappy SELECT id, name 学生より;
-
- student_orcfile_snappyから*を選択します。
寄木細工 Parquet、Snappy 圧縮 -
- 作成する テーブルstudent_parquet_snappy (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- 寄木細工として保管されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.compress.map.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力。圧縮 = org.apache.hadoop.io.compress.SnappyCodec;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
- io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodecを設定します。
-
- INSERT OVERWRITE TABLE student_parquet_snappy SELECT id, name 学生より;
-
- student_parquet_snappyから*を選択します。
アブロ Avro、Snappy圧縮 -
- 作成する テーブルstudent_avro_snappy (id 文字列、名前文字列)
- 行の区切り形式
- フィールド終了 ','
- 終了した回線 '\n'
- AVROとして保存されます。
-
- hive.exec.compress.outputをtrueに設定します。
- mapred.compress.map.outputをtrueに設定します。
- mapred.output.compress = true に設定する;
- mapredを設定します。出力。圧縮 = org.apache.hadoop.io.compress.SnappyCodec;
- mapredを設定します。出力.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
- io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodecを設定します。
-
- INSERT OVERWRITE TABLE student_avro_snappy SELECT id, name 学生より;
-
- student_avro_snappyから*を選択します。
|