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を初公開

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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

超高性能+究極のアプリケーション、Powerleader AIサーバーがインテリジェントな開発を促進

現在、クラウドコンピューティングやAIなどの技術の出現により、データセンター設計の構造的変化が進み、...

MITは、ニューラルネットワークトレーニングのブラックボックスを自動的に覗くネットワーク解剖フレームワークを提案

MIT の新しいテクノロジーは、視覚データでトレーニングされたニューラル ネットワークの内部の仕組み...

「最強の7Bモデル」論文が発表され、ラマ2の13Bバージョンを超える方法が明らかになった

「欧州OpenAI」の「最強の7Bオープンソースモデル」であるMistralは、最近、数え切れないほ...

...

機械学習、データサイエンス、人工知能、ディープラーニング、統計などの違い。

データ サイエンスは幅広い分野であるため、まずはあらゆるビジネスで遭遇する可能性のあるデータ サイエ...

新しいディープラーニングモデルがエッジデバイスに画像セグメンテーションをもたらす方法

[51CTO.com クイック翻訳]画像セグメンテーションは、画像内のオブジェクトの境界と領域を決定...

知っておくべき 8 つのニューラル ネットワーク アーキテクチャ

ニューラル ネットワークは機械学習におけるモデルの一種です。ニューラル ネットワークは、機械学習の分...

...

...

...

...

URLベースのクライアント監視と分析における機械学習の最適化と実践

従来のクライアント監視および分析シナリオでは、特定の URL に基づく統計分析方法が使用されます。た...

DeepMindがMuJoCoをオープンソース化!メタは「スケルトンハンド」にクルミをプレイさせるために使用されます

「クルミで遊んでいる」骸骨の手を見たことがありますか? この魔法の「手」は、Meta が新たにリリー...

テンセント、初のAI+医療製品「テンセントミイン」の発売を発表

テンセントは本日、初のAI医療支援診断・治療オープンプラットフォーム(以下、AI支援診断オープンプラ...