Hive支持的文件格式与压缩算法
近几年参加大数据培训的人越来越多,光环大数据教育小编带你学习大数据,每天学一点,一年成为大数据高手。
只要是配置了正确的文件类型和压缩类型(比如Textfile+Gzip、SequenceFile+Snappy等),Hive都可以按预期读取并解析数据,提供SQL功能。
SequenceFile本身的结构已经设计了内容进行压缩。所以对于SequenceFile文件的压缩,并不是先生成SequenceFile文件,再对文件进行压缩。而是生成SequenceFile文件时,对其中的内容字段进行压缩。最终压缩后,对外仍体现为一个SequenceFile。
RCFile、ORCFile、Parquet、Avro对于压缩的处理方式与SequenceFile相同。
文件格式
- Textfile
- SequenceFile
- RCFile
- ORCFile
- Parquet
- Avro
TEXTFILE
- --创建一个表,格式为文本文件:
- CREATE EXTERNAL TABLE student_text (id STRING, name STRING)
- ROW FORMAT DELIMITED
- FIELDS TERMINATED BY ','
- LINES TERMINATED BY '/n'
- STORED AS TEXTFILE;
- --导入数据到此表中,将启动MR任务
- INSERT OVERWRITE TABLE student_text SELECT * FROM student;
可查看到生成的数据文件的格式为非压缩的文本文件:
- hdfs dfs -cat /user/hive/warehouse/student_text/000000_0
- 1001810081,cheyo
- 1001810082,pku
- 1001810083,rocky
- 1001810084,stephen
- 2002820081,sql
- 2002820082,hello
- 2002820083,hijj
- 3001810081,hhhhhhh
- 3001810082,abbbbbb
文本文件,DEFLATE压缩
- --创建一个表,格式为文件文件:
- CREATE TABLE student_text_def (id STRING, name STRING)
- ROW FORMAT DELIMITED
- FIELDS TERMINATED BY ','
- LINES TERMINATED BY '/n'
- STORED AS TEXTFILE;
- --设置压缩类型为Gzip压缩
- SET hive.exec.compress.output=true;
- SET mapred.output.compress=true;
- SET mapred.output.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;
- --导入数据:
- INSERT OVERWRITE TABLE student_text_def SELECT * FROM student;
- --查看数据
- SELECT * FROM student_text_def;
查看数据文件,可看到数据文件为多个.deflate文件。
- hdfs dfs -ls /user/hive/warehouse/student_text_def/
- -rw-r--r-- 2015-09-16 12:48 /user/hive/warehouse/student_text_def/000000_0.deflate
- -rw-r--r-- 2015-09-16 12:48 /user/hive/warehouse/student_text_def/000001_0.deflate
- -rw-r--r-- 2015-09-16 12:48 /user/hive/warehouse/student_text_def/000002_0.deflate
大数据培训越来越火,大数据产业蓬勃发展。文本文件,Gzip压缩
- --创建一个表,格式为文件文件:
- CREATE TABLE student_text_gzip (id STRING, name STRING)
- ROW FORMAT DELIMITED
- FIELDS TERMINATED BY ','
- LINES TERMINATED BY '/n'
- STORED AS TEXTFILE;
- --设置压缩类型为Gzip压缩
- SET hive.exec.compress.output=true;
- SET mapred.output.compress=true;
- SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
- --导入数据:
- INSERT OVERWRITE TABLE student_text_gzip SELECT * FROM student;
- --查看数据
- SELECT * FROM student_text_gzip;
查看数据文件,可看到数据文件为多个.gz文件。解开.gz文件,可以看到明文文本:
- hdfs dfs -ls /user/hive/warehouse/student_text_gzip/
- -rw-r--r-- 2015-09-15 10:03 /user/hive/warehouse/student_text_gzip/000000_0.gz
- -rw-r--r-- 2015-09-15 10:03 /user/hive/warehouse/student_text_gzip/000001_0.gz
- -rw-r--r-- 2015-09-15 10:03 /user/hive/warehouse/student_text_gzip/000002_0.gz
文本文件,Bzip2压缩
- --创建一个表,格式为文件文件:
- CREATE TABLE student_text_bzip2 (id STRING, name STRING)
- ROW FORMAT DELIMITED
- FIELDS TERMINATED BY ','
- LINES TERMINATED BY '/n'
- STORED AS TEXTFILE;
- --设置压缩类型为Bzip2压缩:
- SET hive.exec.compress.output=true;
- SET mapred.output.compress=true;
- SET mapred.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec;
- --导入数据
- ------>>>>在线客服!