自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hive支持的文件格式與壓縮算法

大數(shù)據(jù) 算法
只要是配置了正確的文件類型和壓縮類型(比如Textfile+Gzip、SequenceFile+Snappy等),Hive都可以按預(yù)期讀取并解析數(shù)據(jù),提供SQL功能。

[[194194]]

概述

只要是配置了正確的文件類型和壓縮類型(比如Textfile+Gzip、SequenceFile+Snappy等),Hive都可以按預(yù)期讀取并解析數(shù)據(jù),提供SQL功能。

SequenceFile本身的結(jié)構(gòu)已經(jīng)設(shè)計(jì)了內(nèi)容進(jìn)行壓縮。所以對(duì)于SequenceFile文件的壓縮,并不是先生成SequenceFile文件,再對(duì)文件進(jìn)行壓縮。而是生成SequenceFile文件時(shí),對(duì)其中的內(nèi)容字段進(jìn)行壓縮。最終壓縮后,對(duì)外仍體現(xiàn)為一個(gè)SequenceFile。

RCFile、ORCFile、Parquet、Avro對(duì)于壓縮的處理方式與SequenceFile相同。

文件格式

  1. Textfile
  2. SequenceFile
  3. RCFile
  4. ORCFile
  5. Parquet
  6. Avro

壓縮算法的編解碼器

TEXTFILE

  1. --創(chuàng)建一個(gè)表,格式為文本文件: 
  2. CREATE EXTERNAL TABLE student_text (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED  
  4.     FIELDS TERMINATED BY ','  
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS TEXTFILE; 
  7. --導(dǎo)入數(shù)據(jù)到此表中,將啟動(dòng)MR任務(wù) 
  8. INSERT OVERWRITE TABLE student_text SELECT * FROM student; 

可查看到生成的數(shù)據(jù)文件的格式為非壓縮的文本文件:

  1. hdfs dfs -cat /user/hive/warehouse/student_text/000000_0 
  2.  
  3. 1001810081,cheyo 
  4. 1001810082,pku 
  5. 1001810083,rocky 
  6. 1001810084,stephen 
  7. 2002820081,sql 
  8. 2002820082,hello 
  9. 2002820083,hijj 
  10. 3001810081,hhhhhhh 
  11. 3001810082,abbbbbb 

文本文件,DEFLATE壓縮

  1. --創(chuàng)建一個(gè)表,格式為文件文件: 
  2. CREATE TABLE student_text_def (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS TEXTFILE; 
  7. --設(shè)置壓縮類型為Gzip壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.output.compress=true
  10. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;  
  11. --導(dǎo)入數(shù)據(jù): 
  12. INSERT OVERWRITE TABLE student_text_def SELECT * FROM student; 
  13. --查看數(shù)據(jù) 
  14. SELECT * FROM student_text_def; 

查看數(shù)據(jù)文件,可看到數(shù)據(jù)文件為多個(gè).deflate文件。

  1. hdfs dfs -ls /user/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. --創(chuàng)建一個(gè)表,格式為文件文件: 
  2. CREATE TABLE student_text_gzip (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS TEXTFILE; 
  7. --設(shè)置壓縮類型為Gzip壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.output.compress=true
  10. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; 
  11. --導(dǎo)入數(shù)據(jù): 
  12. INSERT OVERWRITE TABLE student_text_gzip SELECT * FROM student; 
  13. --查看數(shù)據(jù) 
  14. SELECT * FROM student_text_gzip; 

查看數(shù)據(jù)文件,可看到數(shù)據(jù)文件為多個(gè).gz文件。解開.gz文件,可以看到明文文本:

  1. hdfs dfs -ls /user/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. --創(chuàng)建一個(gè)表,格式為文件文件: 
  2. CREATE TABLE student_text_bzip2 (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS TEXTFILE; 
  7. --設(shè)置壓縮類型為Bzip2壓縮: 
  8. SET hive.exec.compress.output=true
  9. SET mapred.output.compress=true
  10. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec; 
  11. --導(dǎo)入數(shù)據(jù) 
  12. INSERT OVERWRITE TABLE student_text_bzip2 SELECT * FROM student; 
  13. --查看數(shù)據(jù): 
  14. SELECT * FROM student_text_bzip2; 

查看數(shù)據(jù)文件,可看到數(shù)據(jù)文件為多個(gè).bz2文件。解開.bz2文件,可以看到明文文本:

  1. hdfs dfs -ls /user/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. --創(chuàng)建表 
  2. CREATE TABLE student_text_lzo (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS TEXTFILE; 
  7. --設(shè)置為L(zhǎng)ZO壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.output.compress=true
  10. SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec; 
  11. --導(dǎo)入數(shù)據(jù) 
  12. INSERT OVERWRITE TABLE student_text_lzo SELECT * FROM student; 
  13. --查詢數(shù)據(jù) 
  14. SELECT * FROM student_text_lzo; 

查看數(shù)據(jù)文件,可看到數(shù)據(jù)文件為多個(gè).lzo壓縮。解開.lzo文件,可以看到明文文本。

未實(shí)測(cè),需要安裝lzop庫(kù)

文本文件,lz4壓縮

  1. --創(chuàng)建表 
  2. CREATE TABLE student_text_lz4 (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS TEXTFILE; 
  7. --設(shè)置為L(zhǎng)Z4壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.output.compress=true
  10. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.Lz4Codec; 
  11. --導(dǎo)入數(shù)據(jù) 
  12. INSERT OVERWRITE TABLE student_text_lz4 SELECT * FROM student; 

查看數(shù)據(jù)文件,可看到數(shù)據(jù)文件為多個(gè).lz4壓縮。使用cat查看.lz4文件,可以看到是壓縮后的文本。

  1. hdfs dfs -ls /user/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. --創(chuàng)建表 
  2. CREATE TABLE student_text_snappy (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS TEXTFILE; 
  7. --設(shè)置壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.compress.map.output=true
  10. SET mapred.output.compress=true
  11. SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec; 
  12. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; 
  13. SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec; 
  14. --導(dǎo)入數(shù)據(jù) 
  15. INSERT OVERWRITE TABLE student_text_snappy SELECT * FROM student; 
  16. --查詢數(shù)據(jù) 
  17. SELECT * FROM student_text_snappy; 

查看數(shù)據(jù)文件,可看到數(shù)據(jù)文件為多個(gè).snappy壓縮文件。使用cat查看.snappy文件,可以看到是壓縮后的文本:

  1. hdfs dfs -ls /user/hive/warehouse/student_text_snappy 
  2. Found 3 items 
  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 

SEQUENCEFILE

Sequence文件,DEFLATE壓縮

  1. --創(chuàng)建一個(gè)表,格式為文件文件: 
  2. CREATE TABLE student_seq_def (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS SEQUENCEFILE; 
  7. --設(shè)置壓縮類型為Gzip壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.output.compress=true
  10. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;  
  11. --導(dǎo)入數(shù)據(jù): 
  12. INSERT OVERWRITE TABLE student_seq_def SELECT * FROM student; 
  13. --查看數(shù)據(jù) 
  14. SELECT * FROM student_seq_def; 

查看數(shù)據(jù)文件,是一個(gè)密文的文件.

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

Sequence文件,Gzip壓縮

  1. --創(chuàng)建一個(gè)表,格式為文件文件: 
  2. CREATE TABLE student_seq_gzip (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS SEQUENCEFILE; 
  7. --設(shè)置壓縮類型為Gzip壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.output.compress=true
  10. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; 
  11. --導(dǎo)入數(shù)據(jù): 
  12. INSERT OVERWRITE TABLE student_seq_gzip SELECT * FROM student; 
  13. --查看數(shù)據(jù) 
  14. SELECT * FROM student_seq_gzip; 

查看數(shù)據(jù)文件,是一個(gè)密文的文件,無(wú)法通過gzip解壓:

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

RCFILE

RCFILE,Gzip壓縮

  1. CREATE TABLE student_rcfile_gzip (id STRING, name STRING) 
  2. ROW FORMAT DELIMITED 
  3.     FIELDS TERMINATED BY ',' 
  4.     LINES TERMINATED BY '\n' 
  5. STORED AS RCFILE; 
  6.  
  7. --設(shè)置壓縮類型為Gzip壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.output.compress=true
  10. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; 
  11. --導(dǎo)入數(shù)據(jù): 
  12. INSERT OVERWRITE TABLE student_rcfile_gzip SELECT id,name FROM student; 
  13. --查看數(shù)據(jù) 
  14. SELECT * FROM student_rcfile_gzip; 

ORCFile

ORCFile有自己的參數(shù)設(shè)置壓縮格式,一般不使用上述Hive參數(shù)設(shè)置壓縮參數(shù)。

ORCFile,ZLIB壓縮

  1. --創(chuàng)建表 
  2. CREATE TABLE student_orcfile_zlib (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS ORCFILE TBLPROPERTIES ("orc.compress"="ZLIB"); 
  7.  
  8. --導(dǎo)入數(shù)據(jù) 
  9. INSERT OVERWRITE TABLE student_orcfile_zlib SELECT id,name FROM student; 
  10. --查詢數(shù)據(jù) 
  11. SELECT * FROM student_orcfile_zlib; 

ORCFILE,Snappy壓縮

  1. --創(chuàng)建表 
  2. CREATE TABLE student_orcfile_snappy2 (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS ORCFILE TBLPROPERTIES ("orc.compress"="SNAPPY"); 
  7.  
  8. --導(dǎo)入數(shù)據(jù) 
  9. INSERT OVERWRITE TABLE student_orcfile_snappy2 SELECT id,name FROM student; 
  10. --查詢數(shù)據(jù) 
  11. SELECT * FROM student_orcfile_snappy2; 

一般不使用下述方式。下述方式壓縮后,結(jié)果與上述同類型壓縮(SNAPPY)不同。具體原因待進(jìn)一步研究。

  1. --創(chuàng)建表 
  2. CREATE TABLE student_orcfile_snappy (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS ORCFILE; 
  7. --設(shè)置壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.compress.map.output=true
  10. SET mapred.output.compress=true
  11. SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec; 
  12. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; 
  13. SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec; 
  14. --導(dǎo)入數(shù)據(jù) 
  15. INSERT OVERWRITE TABLE student_orcfile_snappy SELECT id,name FROM student; 
  16. --查詢數(shù)據(jù) 
  17. SELECT * FROM student_orcfile_snappy; 

Parquet

Parquet,Snappy壓縮

  1. --創(chuàng)建表 
  2. CREATE TABLE student_parquet_snappy (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS PARQUET; 
  7. --設(shè)置壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.compress.map.output=true
  10. SET mapred.output.compress=true
  11. SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec; 
  12. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; 
  13. SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec; 
  14. --導(dǎo)入數(shù)據(jù) 
  15. INSERT OVERWRITE TABLE student_parquet_snappy SELECT id,name FROM student; 
  16. --查詢數(shù)據(jù) 
  17. SELECT * FROM student_parquet_snappy; 

Avro

Avro,Snappy壓縮

  1. --創(chuàng)建表 
  2. CREATE TABLE student_avro_snappy (id STRING, name STRING) 
  3. ROW FORMAT DELIMITED 
  4.     FIELDS TERMINATED BY ',' 
  5.     LINES TERMINATED BY '\n' 
  6. STORED AS AVRO; 
  7. --設(shè)置壓縮 
  8. SET hive.exec.compress.output=true
  9. SET mapred.compress.map.output=true
  10. SET mapred.output.compress=true
  11. SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec; 
  12. SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; 
  13. SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec; 
  14. --導(dǎo)入數(shù)據(jù) 
  15. INSERT OVERWRITE TABLE student_avro_snappy SELECT id,name FROM student; 
  16. --查詢數(shù)據(jù) 
  17. SELECT * FROM student_avro_snappy; 
責(zé)任編輯:武曉燕 來源: oschina博客
相關(guān)推薦

2010-08-02 14:19:28

DB2數(shù)據(jù)庫(kù)

2010-08-02 14:14:13

DB2數(shù)據(jù)庫(kù)

2012-05-29 09:06:32

Hadoop文件格式

2016-12-01 14:47:20

2012-05-29 09:48:21

Hadoop

2010-08-03 15:40:30

NFS文件格式

2017-08-25 17:41:17

Paradox數(shù)據(jù)文件格式

2011-03-03 10:48:36

DB2數(shù)據(jù)庫(kù)外部文件

2023-11-02 09:54:21

ODT文件

2010-07-28 14:26:37

DB2支持

2021-09-29 15:52:26

計(jì)算機(jī)配置文件語(yǔ)言

2010-07-27 13:34:08

DB2數(shù)據(jù)庫(kù)

2010-09-06 12:44:24

DB2數(shù)據(jù)庫(kù)

2011-05-26 10:52:41

DB2數(shù)據(jù)庫(kù)

2010-08-26 16:26:19

DB2數(shù)據(jù)庫(kù)外部文件

2010-07-27 15:20:01

DB2數(shù)據(jù)庫(kù)

2010-08-02 14:09:57

DB2數(shù)據(jù)庫(kù)

2022-04-22 17:07:21

MIDI傳輸協(xié)議音樂技術(shù)

2010-05-07 11:38:55

Oracle DB2

2009-07-20 09:44:31

DB2外部文件格式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)