Hive支持的文件格式与压缩算法

编辑: 来源: 时间: 2018-02-27 18:08 阅读:
近几年参加大数据培训的人越来越多,光环大数据教育小编带你学习大数据,每天学一点,一年成为大数据高手。
  

只要是配置了正确的文件类型和压缩类型(比如Textfile+Gzip、SequenceFile+Snappy等),Hive都可以按预期读取并解析数据,提供SQL功能。

SequenceFile本身的结构已经设计了内容进行压缩。所以对于SequenceFile文件的压缩,并不是先生成SequenceFile文件,再对文件进行压缩。而是生成SequenceFile文件时,对其中的内容字段进行压缩。最终压缩后,对外仍体现为一个SequenceFile。

RCFile、ORCFile、Parquet、Avro对于压缩的处理方式与SequenceFile相同。

文件格式

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

 

TEXTFILE

  1. --创建一个表,格式为文本文件: 
  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. --导入数据到此表中,将启动MR任务 
  8. INSERT OVERWRITE TABLE student_text SELECT * FROM student; 

可查看到生成的数据文件的格式为非压缩的文本文件:

  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. --创建一个表,格式为文件文件: 
  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. --设置压缩类型为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. --导入数据: 
  12. INSERT OVERWRITE TABLE student_text_def SELECT * FROM student; 
  13. --查看数据 
  14. SELECT * FROM student_text_def; 

查看数据文件,可看到数据文件为多个.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. --创建一个表,格式为文件文件: 
  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. --设置压缩类型为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. --导入数据: 
  12. INSERT OVERWRITE TABLE student_text_gzip SELECT * FROM student; 
  13. --查看数据 
  14. SELECT * FROM student_text_gzip; 

查看数据文件,可看到数据文件为多个.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. --创建一个表,格式为文件文件: 
  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. --设置压缩类型为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. --导入数据 
  12. ------>>>>在线客服!

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();