Hive でサポートされているファイル形式と圧縮アルゴリズム

Hive でサポートされているファイル形式と圧縮アルゴリズム

[[194194]]

概要

正しいファイル タイプと圧縮タイプ (Textfile+Gzip、SequenceFile+Snappy など) が構成されている限り、Hive は期待どおりにデータを読み取って解析し、S​​QL 関数を提供できます。

SequenceFile 自体の構造はコンテンツを圧縮するように設計されています。したがって、SequenceFile ファイルの圧縮では、最初に SequenceFile ファイルを生成してからファイルを圧縮する必要はありません。代わりに、SequenceFile ファイルを生成するときに、コンテンツ フィールドが圧縮されます。最終圧縮後も、外部には SequenceFile として表示されます。

RCFile、ORCFile、Parquet、Avro は、SequenceFile と同じ方法で圧縮を処理します。

ファイル形式

  1. テキストファイル
  2. シーケンスファイル
  3. RCファイル
  4. ORCファイル
  5. 寄木細工
  6. アブロ

圧縮アルゴリズムコーデック

テキストファイル

  1. --テキスト ファイル形式でテーブルを作成します。  
  2. 外部テーブルstudent_text (id 文字列、 name文字列)を作成します。
  3. 行の区切り形式
  4. フィールド終了  ','   
  5. 終了し回線  '\n'  
  6. テキストファイルとして保存されます
  7. --このテーブルにデータをインポートし、MRタスクを開始します 
  8. INSERT OVERWRITE TABLE student_text SELECT * FROM student;

生成されたデータ ファイルの形式は、圧縮されていないテキスト ファイルであることがわかります。

  1. hdfs dfs -cat /ユーザー/hive/warehouse/student_text/000000_0
  2.  
  3. 1001810081,チェヨ
  4. 1001810082,pku
  5. 1001810083,ロッキー
  6. 1001810084、スティーブン
  7. 2002820081、SQL
  8. 2002820082、こんにちは
  9. 2002820083,ヒジ
  10. 3001810081、ああああああ
  11. 3001810082、あぶぶぶ

テキストファイル、DEFLATE圧縮

  1. --ファイル形式でテーブルを作成します。  
  2. 作成する テーブルstudent_text_def (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. テキストファイルとして保存されます
  7. --圧縮タイプをGzip圧縮に設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.output.compress = true に設定する;
  10. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;
  11. --データのインポート:  
  12. INSERT OVERWRITE TABLE student_text_def SELECT * FROM student;
  13. --データを表示 
  14. student_text_defから*を選択します

データ ファイルを見ると、データ ファイルが複数の .deflate ファイルであることがわかります。

  1. hdfs dfs -ls /ユーザー/hive/warehouse/student_text_def/
  2. -rw-r --r-- 2015-09-16 12:48 /user/hive/warehouse/student_text_def/000000_0.deflate  
  3. -rw-r --r-- 2015-09-16 12:48 /user/hive/warehouse/student_text_def/000001_0.deflate  
  4. -rw-r --r-- 2015-09-16 12:48 /user/hive/warehouse/student_text_def/000002_0.deflate  

テキストファイル、Gzip圧縮

  1. --ファイル形式でテーブルを作成します。  
  2. 作成する テーブルstudent_text_gzip (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. テキストファイルとして保存されます
  7. --圧縮タイプをGzip圧縮に設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.output.compress = true に設定する;
  10. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
  11. --データのインポート:  
  12. INSERT OVERWRITE TABLE student_text_gzip SELECT * FROM student;
  13. --データを表示 
  14. student_text_gzipから*を選択します

データ ファイルを確認すると、データ ファイルが複数の .gz ファイルであることがわかります。 .gz ファイルを解凍すると、プレーンテキストが表示されます。

  1. hdfs dfs -ls /ユーザー/hive/warehouse/student_text_gzip/
  2. -rw-r --r-- 2015-09-15 10:03 /user/hive/warehouse/student_text_gzip/000000_0.gz  
  3. -rw-r --r-- 2015-09-15 10:03 /user/hive/warehouse/student_text_gzip/000001_0.gz  
  4. -rw-r --r-- 2015-09-15 10:03 /user/hive/warehouse/student_text_gzip/000002_0.gz  

テキストファイル、Bzip2 圧縮

  1. --ファイル形式でテーブルを作成します。  
  2. 作成する テーブルstudent_text_bzip2 (id 文字列、名前 文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. テキストファイルとして保存されます
  7. --圧縮タイプを Bzip2 圧縮に設定します。  
  8. hive.exec.compress.outputtrue設定します
  9. mapred.output.compress = true に設定する;
  10. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.BZip2Codec;
  11. --データのインポート 
  12. INSERT OVERWRITE TABLE student_text_bzip2 SELECT * FROM student;
  13. --データを表示:  
  14. student_text_bzip2から*を選択します

データ ファイルを表示すると、データ ファイルが複数の .bz2 ファイルであることがわかります。 .bz2 ファイルを解凍すると、プレーンテキストが表示されます。

  1. hdfs dfs -ls /ユーザー/hive/warehouse/student_text_bzip2
  2. -rw-r --r-- 2015-09-15 10:09 /user/hive/warehouse/student_text_bzip2/000000_0.bz2  
  3. -rw-r --r-- 2015-09-15 10:09 /user/hive/warehouse/student_text_bzip2/000001_0.bz2  
  4. -rw-r --r-- 2015-09-15 10:09 /user/hive/warehouse/student_text_bzip2/000002_0.bz2  

テキストファイル、LZO圧縮

  1. --テーブルを作成 
  2. 作成する テーブルstudent_text_lzo (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. テキストファイルとして保存されます
  7. --LZO圧縮に設定 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.output.compress = true に設定する;
  10. mapredを設定します出力.compression.codec=com.hadoop.compression.lzo.LzopCodec;
  11. --データのインポート 
  12. INSERT OVERWRITE TABLE student_text_lzo SELECT * FROM student;
  13. --クエリデータ 
  14. student_text_lzoから*を選択します

データ ファイルを確認すると、データ ファイルが複数の .lzo ファイルに圧縮されていることがわかります。 .lzo ファイルを解凍すると、プレーンテキストが表示されます。

テストされていません。lzop ライブラリをインストールする必要があります。

テキストファイル、lz4 圧縮

  1. --テーブルを作成 
  2. 作成する テーブルstudent_text_lz4 (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. テキストファイルとして保存されます
  7. --LZ4圧縮に設定 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.output.compress = true に設定する;
  10. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.Lz4Codec;
  11. --データのインポート 
  12. INSERT OVERWRITE TABLE student_text_lz4 SELECT * FROM student;

データ ファイルを見ると、データ ファイルが複数の .lz4 ファイルに圧縮されていることがわかります。 cat を使用して .lz4 ファイルを表示すると、圧縮されたテキストであることがわかります。

  1. hdfs dfs -ls /ユーザー/hive/warehouse/student_text_lz4
  2. -rw-r --r-- 2015-09-16 12:06 /user/hive/warehouse/student_text_lz4/000000_0.lz4  
  3. -rw-r --r-- 2015-09-16 12:06 /user/hive/warehouse/student_text_lz4/000001_0.lz4  
  4. -rw-r --r-- 2015-09-16 12:06 /user/hive/warehouse/student_text_lz4/000002_0.lz4  

テキストファイル、Snappy圧縮

  1. --テーブルを作成 
  2. 作成する テーブルstudent_text_snappy (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. テキストファイルとして保存されます
  7. --圧縮を設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.compress.map.outputtrue設定します
  10. mapred.output.compress = true に設定する;
  11. mapredを設定します出力。圧縮 = org.apache.hadoop.io.compress.SnappyCodec;
  12. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
  13. io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodecを設定します
  14. --データのインポート 
  15. INSERT OVERWRITE TABLE student_text_snappy SELECT * FROM student;
  16. --クエリデータ 
  17. student_text_snappyから*を選択します

データ ファイルを確認すると、データ ファイルが複数の .snappy 圧縮ファイルであることがわかります。 cat を使用して .snappy ファイルを表示すると、圧縮されたテキストであることがわかります。

  1. hdfs dfs -ls /ユーザー/hive/warehouse/student_text_snappy
  2. 3 件のアイテムが見つかりました
  3. -rw-r --r-- 2015-09-15 16:42 /user/hive/warehouse/student_text_snappy/000000_0.snappy  
  4. -rw-r --r-- 2015-09-15 16:42 /user/hive/warehouse/student_text_snappy/000001_0.snappy  
  5. -rw-r --r-- 2015-09-15 16:42 /user/hive/warehouse/student_text_snappy/000002_0.snappy  

シーケンスファイル

シーケンスファイル、DEFLATE圧縮

  1. --ファイル形式でテーブルを作成します。  
  2. 作成する テーブルstudent_seq_def (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. シーケンスファイルとして保存されます
  7. --圧縮タイプをGzip圧縮に設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.output.compress = true に設定する;
  10. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;
  11. --データのインポート:  
  12. INSERT OVERWRITE TABLE student_seq_def SELECT * FROM student;
  13. --データを表示 
  14. student_seq_defから*を選択します

データ ファイルを表示します。これは暗号テキスト ファイルです。

  1. hdfs dfs -ls /ユーザー/hive/warehouse/student_seq_def/
  2. -rw-r --r-- /user/hive/warehouse/student_seq_def/000000_0  

シーケンスファイル、Gzip圧縮

  1. --ファイル形式でテーブルを作成します。  
  2. 作成する テーブルstudent_seq_gzip (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. シーケンスファイルとして保存されます
  7. --圧縮タイプをGzip圧縮に設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.output.compress = true に設定する;
  10. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
  11. --データのインポート:  
  12. INSERT OVERWRITE TABLE student_seq_gzip SELECT * FROM student;
  13. --データを表示 
  14. student_seq_gzipから*を選択します

データ ファイルを確認してください。これは暗号テキスト ファイルであり、gzip で解凍することはできません。

  1. hdfs dfs -ls /ユーザー/hive/warehouse/student_seq_gzip/
  2. -rw-r --r-- /user/hive/warehouse/student_seq_gzip/000000_0  

RCFILE

RCFILE、Gzip 圧縮

  1. 作成する テーブルstudent_rcfile_gzip (id 文字列、名前 文字列)
  2. 行の区切り形式
  3. フィールド終了  ','  
  4. 終了し回線  '\n'  
  5. RCFILEとして保存されます。
  6.  
  7. --圧縮タイプをGzip圧縮に設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.output.compress = true に設定する;
  10. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
  11. --データのインポート:  
  12. INSERT OVERWRITE TABLE student_rcfile_gzip SELECT id, name  学生より;
  13. --データを表示 
  14. student_rcfile_gzipから*を選択します

ORCファイル

ORCFile には圧縮形式を設定するための独自のパラメータがあり、通常は上記の Hive パラメータを使用して圧縮パラメータを設定することはありません。

ORCFile、ZLIB 圧縮

  1. --テーブルを作成 
  2. 作成する テーブルstudent_orcfile_zlib (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. ORCFILE TBLPROPERTIES ( "orc.compress" = "ZLIB" )として保存されます。
  7.  
  8. --データのインポート 
  9. INSERT OVERWRITE TABLE student_orcfile_zlib SELECT id, name  学生より;
  10. --クエリデータ 
  11. student_orcfile_zlibから*を選択します

ORCFILE、Snappy 圧縮

  1. --テーブルを作成 
  2. 作成する テーブルstudent_orcfile_snappy2 (id 文字列、名前 文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. ORCFILE TBLPROPERTIES ( "orc.compress" = "SNAPPY" )として保存されます
  7.  
  8. --データのインポート 
  9. INSERT OVERWRITE TABLE student_orcfile_snappy2 SELECT id, name  学生より;
  10. --クエリデータ 
  11. student_orcfile_snappy2から*を選択します

以下の方法は一般的には使用されません。次の圧縮方法では、上記の同じタイプの圧縮 (SNAPPY) とは異なる結果になります。具体的な理由についてはさらに調査する必要がある。

  1. --テーブルを作成 
  2. 作成する テーブルstudent_orcfile_snappy (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. ORCFILEとして保存されます。
  7. --圧縮を設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.compress.map.outputtrue設定します
  10. mapred.output.compress = true に設定する;
  11. mapredを設定します出力。圧縮 = org.apache.hadoop.io.compress.SnappyCodec;
  12. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
  13. io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodecを設定します
  14. --データのインポート 
  15. INSERT OVERWRITE TABLE student_orcfile_snappy SELECT id, name  学生より;
  16. --クエリデータ 
  17. student_orcfile_snappyから*を選択します

寄木細工

Parquet、Snappy 圧縮

  1. --テーブルを作成 
  2. 作成する テーブルstudent_parquet_snappy (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. 寄木細工として保管されます
  7. --圧縮を設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.compress.map.outputtrue設定します
  10. mapred.output.compress = true に設定する;
  11. mapredを設定します出力。圧縮 = org.apache.hadoop.io.compress.SnappyCodec;
  12. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
  13. io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodecを設定します
  14. --データのインポート 
  15. INSERT OVERWRITE TABLE student_parquet_snappy SELECT id, name  学生より;
  16. --クエリデータ 
  17. student_parquet_snappyから*を選択します

アブロ

Avro、Snappy圧縮

  1. --テーブルを作成 
  2. 作成する テーブルstudent_avro_snappy (id 文字列、名前文字列)
  3. 行の区切り形式
  4. フィールド終了  ','  
  5. 終了し回線  '\n'  
  6. AVROとして保存されます。
  7. --圧縮を設定する 
  8. hive.exec.compress.outputtrue設定します
  9. mapred.compress.map.outputtrue設定します
  10. mapred.output.compress = true に設定する;
  11. mapredを設定します出力。圧縮 = org.apache.hadoop.io.compress.SnappyCodec;
  12. mapredを設定します出力.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
  13. io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodecを設定します
  14. --データのインポート 
  15. INSERT OVERWRITE TABLE student_avro_snappy SELECT id, name  学生より;
  16. --クエリデータ 
  17. student_avro_snappyから*を選択します

<<:  ビッグニュース!アリママが自社開発のCTR推定コアアルゴリズムMLRを初公開

>>:  データ構造とアルゴリズムソート - 理解できないなら、私に相談してください

ブログ    
ブログ    
ブログ    

推薦する

人工知能がデジタルマーケティング業界を変革

[[391859]]人工知能はデジタルマーケティング業界に変化をもたらしているのでしょうか? はい!...

RLHF の欠陥が完全に明らかに! MIT、ハーバード大学、その他32名の学者が共同で発表

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

RPA 導入が失敗する 7 つの理由

ロボティック・プロセス・オートメーションは現在、業界全体のデジタル化を推進するデジタル変革の中核とな...

ビジネスリーダーがLLMを活用して新たな機会を創出できる5つの方法

一般的に、AIGC とは、人間が作成したコンテンツに非常によく似た画像、音楽、テキストなどのコンテン...

顔認識技術はスマート建設現場やスマートコミュニティにどのようなメリットをもたらすのでしょうか?

スマートシティ、スマートコミュニティ、スマート交通は絶えず推進され、普及しており、ユーザーの使用習慣...

2020 年に慈善活動を変える主要なテクノロジー トレンドのリスト

チャリティーは常に実行速度が遅いことで知られています。慈善団体が社会、経済、環境の変化に対応するには...

AIアプリケーションはコストを2倍以上にする

人工知能の登場により、多くの企業がこの分野の研究開発に多額の資金を投資し、一部の企業は成果を上げ始め...

マスク氏は5年以内に人間の言語を無意味にするだろうと言っているが、今回は狂気ではないかもしれない

イーロン・マスク氏は、わずか5年で人間の言語を無意味にすることができる技術に取り組んでいると述べてい...

ChatGPTスーパープラグインをテスト済み: 経験ゼロでも5分でゲームを開発

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

画像類似性比較 CLIP または DINOv2

人工知能の分野において、コンピューター ビジョンの 2 大巨頭は CLIP と DINOv2 です。...

Nuscenes 最新 SOTA | DynamicBEV が PETRv2/BEVDepth を上回る!

1. 論文情報2. はじめにこの論文では、自動運転、ロボット工学、監視などのアプリケーションに不可...

Huang が H100 を「ブースト」: NVIDIA が大規模モデル アクセラレーション パッケージを発表、Llama2 推論速度が 2 倍に

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

マイクロソフト、精度を80%以上に向上させるAIコードレビューツールを発表

Microsoft は、大規模言語モデルのパフォーマンスを向上させる新しいツール、Jigsaw を発...

...