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

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

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

推薦する

ジャック・マーの野望がついに暴露される!たった今、アリの無人ホテルがオープンしました!ウェイターもレジ係もいない…また混乱

[[248958]]今週末、インターネットは再び混乱に陥った。ジャック・マーが2年かけて準備してきた...

...

AI温度測定から警備ロボットまで、インテリジェントセキュリティは新たな「ゲートキーパー」となるのでしょうか?

セキュリティシステムといえば、「監視カメラ」や「電子アクセス制御」を思い浮かべる人が多いでしょう。人...

中国AIGCデータラベリングパノラマレポート:市場規模100億、求人数100万

データラベリングは重大な再編の時期を迎えています。ビッグモデル時代の到来により、データ中心の AI ...

産業用 IoT が人工知能の時代へ

インテリジェンスは近年、製造業における最も重要なトレンドです。過去数年間の市場教育を経て、過去2年間...

Pytorch チュートリアル: 初心者向けクイックガイド

Python は、オープンソースの ML ライブラリ Pytorch のおかげで、データ サイエンス...

AIが医療業界に参入すると、人間は看護師の仕事を失うのでしょうか?

AIに取って代わられにくい、人間の「鉄の飯碗」を探し続けていきましょう。医療業界では、AI と自動...

5Gベアラネットワークの運用は難しいが、機械学習技術で解決できる

5G の商用化が近づいており、通信事業者が 5G ベアラ ネットワークを構築するための時間はあまり残...

GPT-4 Turbo が Microsoft Copilot に搭載されるようになりました。アクセス可能かどうかを確認する方法は次のとおりです。

開発者、ライター、または AI 愛好家であれば、ChatGPT の開発元である OpenAI の最新...

2018 年の人工知能に関する 10 冊の良書のまとめ

いろいろ検索してみたところ、インターネット上にはまだ人工知能に関する本のリストがないので、自分で作っ...

...

AI人材の世界的な需要が急増、一部の職種では年間40万ドル近くを稼ぐ

6月19日のニュース:AI産業の急速な発展に伴い、テクノロジー業界のAI人材に対する需要も高まってい...

AIOps 実装をスムーズに開始するための 3 つのヒント

[[386134]]企業は、激しい市場競争に直面して、ビジネスと IT の間にスムーズな「リンク」を...

...

GPTは「贅沢」すぎるが、代替案が多数用意されており、展開の問題を心配する必要はもうない

近年、生成的事前トレーニング済みモデル (GPT など) の台頭により、自然言語処理の分野に革命が起...