Hive之——Hive支持的文件格式与压缩算法(1.2.1)
概述
只要是配置了正确的文件类型和压缩类型(比如Textfile+Gzip、SequenceFile+Snappy等),Hive都可以按预期读取并解析数据,提供SQL功能。
SequenceFile本身的结构已经设计了内容进行压缩。所以对于SequenceFile文件的压缩,并不是先生成SequenceFile文件,再对文件进行压缩。而是生成SequenceFile文件时,对其中的内容字段进行压缩。最终压缩后,对外仍体现为一个SequenceFile。
RCFile、ORCFile、Parquet、Avro对于压缩的处理方式与SequenceFile相同。
文件格式
- Textfile
- SequenceFile
- RCFile
- ORCFile
- Parquet
- Avro
压缩算法的编解码器
序号 | 压缩格式 | 算法 | 多文件 | 可分割性 | 工具 | 工具压缩后扩展名 |
---|---|---|---|---|---|---|
1 | DEFLATE | DEFLATE | 不 | 不 | 无 | .deflate |
2 | Gzip | DEFLATE | 不 | 不 | gzip | .gz |
3 | bzip2 | bzip2 | 不 | 是 | bzip2 | .bz2 |
4 | LZO | LZO | 不 | 不 | lzop | .lzo |
5 | LZ4 | ??? | ?? | ?? | ??? | ??? |
6 | Snappy | ??? | ?? | ?? | ??? | ??? |
7 | ZLIB | ??? | ?? | ?? | ??? | ??? |
8 | ZIP | DEFLATE | 是 | 是,在文件范围内 | zip | .zip |
TEXTFILE
文本文件,非压缩
1 2 3 4 5 6 7 8 |
--创建一个表,格式为文本文件: 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_01001810081,cheyo
1001810082,pku
1001810083,rocky
1001810084,stephen
2002820081,sql
2002820082,hello
2002820083,hijj
3001810081,hhhhhhh
3001810082,abbbbbb
文本文件,DEFLATE压缩
123456789 10 11 12 13 14 |
--创建一个表,格式为文件文件: CREATE TABLE student_text_def (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS 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压缩
123456789 10 11 12 13 14 |
--创建一个表,格式为文件文件: CREATE TABLE student_text_gzip (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS 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压缩
123456789 10 11 12 13 14 |
--创建一个表,格式为文件文件: CREATE TABLE student_text_bzip2 (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS 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; --导入数据 INSERT OVERWRITE TABLE student_text_bzip2 SELECT * FROM student; --查看数据: SELECT * FROM student_text_bzip2; |
查看数据文件,可看到数据文件为多个.bz2文件。解开.bz2文件,可以看到明文文本:
hdfs dfs -ls /user/hive/warehouse/student_text_bzip2
-rw-r--r-- 2015-09-15 10:09 /user/hive/warehouse/student_text_bzip2/000000_0.bz2
-rw-r--r-- 2015-09-15 10:09 /user/hive/warehouse/student_text_bzip2/000001_0.bz2
-rw-r--r-- 2015-09-15 10:09 /user/hive/warehouse/student_text_bzip2/000002_0.bz2
文本文件,lzo压缩
123456789 10 11 12 13 14 |
--创建表 CREATE TABLE student_text_lzo (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS TEXTFILE; --设置为LZO压缩 SET hive.exec.compress.output=true; SET mapred.output.compress=true; SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec; --导入数据 INSERT OVERWRITE TABLE student_text_lzo SELECT * FROM student; --查询数据 SELECT * FROM student_text_lzo; |
查看数据文件,可看到数据文件为多个.lzo压缩。解开.lzo文件,可以看到明文文本。
未实测,需要安装lzop库
文本文件,lz4压缩
123456789 10 11 12 |
--创建表 CREATE TABLE student_text_lz4 (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS TEXTFILE; --设置为LZ4压缩 SET hive.exec.compress.output=true; SET mapred.output.compress=true; SET mapred.output.compression.codec=org.apache.hadoop.io.compress.Lz4Codec; --导入数据 INSERT OVERWRITE TABLE student_text_lz4 SELECT * FROM student; |
查看数据文件,可看到数据文件为多个.lz4压缩。使用cat查看.lz4文件,可以看到是压缩后的文本。
hdfs dfs -ls /user/hive/warehouse/student_text_lz4
-rw-r--r-- 2015-09-16 12:06 /user/hive/warehouse/student_text_lz4/000000_0.lz4
-rw-r--r-- 2015-09-16 12:06 /user/hive/warehouse/student_text_lz4/000001_0.lz4
-rw-r--r-- 2015-09-16 12:06 /user/hive/warehouse/student_text_lz4/000002_0.lz4
文本文件,Snappy压缩
123456789 10 11 12 13 14 15 16 17 |
--创建表 CREATE TABLE student_text_snappy (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS TEXTFILE; --设置压缩 SET hive.exec.compress.output=true; SET mapred.compress.map.output=true; SET mapred.output.compress=true; SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec; SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec; --导入数据 INSERT OVERWRITE TABLE student_text_snappy SELECT * FROM student; --查询数据 SELECT * FROM student_text_snappy; |
查看数据文件,可看到数据文件为多个.snappy压缩文件。使用cat查看.snappy文件,可以看到是压缩后的文本:
hdfs dfs -ls /user/hive/warehouse/student_text_snappy
Found 3 items
-rw-r--r-- 2015-09-15 16:42 /user/hive/warehouse/student_text_snappy/000000_0.snappy
-rw-r--r-- 2015-09-15 16:42 /user/hive/warehouse/student_text_snappy/000001_0.snappy
-rw-r--r-- 2015-09-15 16:42 /user/hive/warehouse/student_text_snappy/000002_0.snappy
SEQUENCEFILE
Sequence文件,DEFLATE压缩
123456789 10 11 12 13 14 |
--创建一个表,格式为文件文件: CREATE TABLE student_seq_def (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS SEQUENCEFILE; --设置压缩类型为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_seq_def SELECT * FROM student; --查看数据 SELECT * FROM student_seq_def; |
查看数据文件,是一个密文的文件.
hdfs dfs -ls /user/hive/warehouse/student_seq_def/
-rw-r--r-- /user/hive/warehouse/student_seq_def/000000_0
Sequence文件,Gzip压缩
123456789 10 11 12 13 14 |
--创建一个表,格式为文件文件: CREATE TABLE student_seq_gzip (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS SEQUENCEFILE; --设置压缩类型为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_seq_gzip SELECT * FROM student; --查看数据 SELECT * FROM student_seq_gzip; |
查看数据文件,是一个密文的文件,无法通过gzip解压:
hdfs dfs -ls /user/hive/warehouse/student_seq_gzip/
-rw-r--r-- /user/hive/warehouse/student_seq_gzip/000000_0
RCFILE
RCFILE,Gzip压缩
123456789 10 11 12 13 14 |
CREATE TABLE student_rcfile_gzip (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS RCFILE;--设置压缩类型为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_rcfile_gzip SELECT id,name FROM student; --查看数据 SELECT * FROM student_rcfile_gzip; |
ORCFile
ORCFile有自己的参数设置压缩格式,一般不使用上述Hive参数设置压缩参数。
参考文档:LanguageManual ORC
ORCFile,ZLIB压缩
123456789 10 11 |
--创建表 CREATE TABLE student_orcfile_zlib (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS ORCFILE TBLPROPERTIES ("orc.compress"="ZLIB");--导入数据 INSERT OVERWRITE TABLE student_orcfile_zlib SELECT id,name FROM student; --查询数据 SELECT * FROM student_orcfile_zlib; |
ORCFILE,Snappy压缩
123456789 10 11 |
--创建表 CREATE TABLE student_orcfile_snappy2 (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS ORCFILE TBLPROPERTIES ("orc.compress"="SNAPPY");--导入数据 INSERT OVERWRITE TABLE student_orcfile_snappy2 SELECT id,name FROM student; --查询数据 SELECT * FROM student_orcfile_snappy2; |
一般不使用下述方式。下述方式压缩后,结果与上述同类型压缩(SNAPPY)不同。具体原因待进一步研究。
123456789 10 11 12 13 14 15 16 17 |
--创建表 CREATE TABLE student_orcfile_snappy (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS ORCFILE; --设置压缩 SET hive.exec.compress.output=true; SET mapred.compress.map.output=true; SET mapred.output.compress=true; SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec; SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec; --导入数据 INSERT OVERWRITE TABLE student_orcfile_snappy SELECT id,name FROM student; --查询数据 SELECT * FROM student_orcfile_snappy; |
Parquet
Parquet,Snappy压缩
123456789 10 11 12 13 14 15 16 17 |
--创建表 CREATE TABLE student_parquet_snappy (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS PARQUET; --设置压缩 SET hive.exec.compress.output=true; SET mapred.compress.map.output=true; SET mapred.output.compress=true; SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec; SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec; --导入数据 INSERT OVERWRITE TABLE student_parquet_snappy SELECT id,name FROM student; --查询数据 SELECT * FROM student_parquet_snappy; |
Avro
Avro,Snappy压缩
123456789 10 11 12 13 14 15 16 17 |
--创建表 CREATE TABLE student_avro_snappy (id STRING, name STRING) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n' STORED AS AVRO; --设置压缩 SET hive.exec.compress.output=true; SET mapred.compress.map.output=true; SET mapred.output.compress=true; SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec; SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec; --导入数据 INSERT OVERWRITE TABLE student_avro_snappy SELECT id,name FROM student; --查询数据 SELECT * FROM student_avro_snappy; |
参考文档
- hive压缩
- hadoop mapreduce和hive中使用SequeceFile+lzo格式数据
- Hive文件存储格式的测试比较
Hive之——Hive支持的文件格式与压缩算法(1.2.1)相关推荐
- Hive表设置支持中文注释、中文表数据导入
问题 1.创建表的时候,comment说明字段包含中文,表成功创建成功之后,中文说明显示乱 create table student_score( stu_id string comment '学生i ...
- 为什么使用Hive?Hive提供了什么?Hive支持哪些用户?
为什么使用Hive? 为什么使用Hive?那么,在哪里使用Hive呢?在载入了60亿行(经度.维度.时间.数据值.高度)数据集到MySQL后,系统崩溃了,并经历过数据丢失.这可能部分是因为我们最初的策 ...
- [Hive基础]-- Hive table 的压缩方式和存储格式
目录 一.了解 Hadoop 的压缩方式 1.Hadoop 的压缩方式的基本信息 2.Hadoop 压缩方式优缺点对比 二. Hive table的存储格式 1.TEXTFILE 2.Parquet ...
- 【hive】Hive常见的存储格式的区别与应用场景
Hive常见的存储格式的区别与应用场景 一.文件存储格式 行存储和列存储 1.TextFile 2.sequencefile 3.RC 4.orc(工作中常用) 5.parquet 二.四种存储格式分 ...
- 大数据时代的技术hive:hive介绍
转自:http://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html 我最近研究了hive的相关技术,有点心得,这里和大家分享下. ...
- 深入浅出学Hive:Hive高级编程
目录: 初始Hive Hive安装与配置 Hive内建操作符与函数开发 Hive JDBC Hive参数 Hive高级编程 Hive QL Hive Shell基本操作 Hive优化 Hive体系结构 ...
- 【Hive】hive表的文件存储格式
在Hive中,文件的存储格式主要有:TEXTFILE.SEQUENCEFILE.ORC.PARQUET. 其中,TEXTFILE.SEQUENCEFILE是基于行存储,ORC.PARQUET基于列存储 ...
- BigData之Hive:Hive数据管理的简介、下载、案例应用之详细攻略
BigData之Hive:Hive数据管理的简介.下载.案例应用之详细攻略 目录 Hive数据管理的简介 1.Hive的适用场景--不适合那些需要高实性的应用(不能够在大规模数据集上实现低延迟快速的查 ...
- Hive基本操作,DDL操作(创建表,修改表,显示命令),DML操作(Load Insert Select),Hive Join,Hive Shell参数(内置运算符、内置函数)等
1. Hive基本操作 1.1DDL操作 1.1.1 创建表 建表语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_nam ...
最新文章
- 面向对象编程(OOP)----BLUE大师JS课堂笔记(二)
- 怎么能把看不清的照片给看清_哪些人会得?应该怎么治?关于白内障的“经典十问”...
- NOIP 2017 d2t2 70points
- 【网址收藏】win10 VirtualBox安装CentOS 7教程
- PHP5.6.6上运行 ecshop 2.7.3常见问题处理
- 容器间通信的三种方式 - 每天5分钟玩转 Docker 容器技术(35)
- yum 不能安装应用,提示There are no enabled repos Run yum repolist all
- linux+查看系统环境路径,Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH
- 「转」101个著名的心理效应
- HTML5期末大作业:学校网站设计——初级中学网站(16页)HTML+CSS+JavaScript 学校网页设计作业 网页设计作业 学生个人设计成品,网页设计作业
- HEVC(H.265)与AVC(H.264)的区别与联系
- 从零开始学习CANoe 系列文章目录汇总
- Google Play Store上线流程
- 计算机音乐谱恋人心,天刀曲谱大全_天涯明月刀曲谱恋人心
- x86架构和arm架构的cpu简图
- (淘宝无限适配)手机端rem布局
- Python——打开文件
- 笔记本拆c面_拆解C面准备步骤 注意拧下所有螺丝_Alienware 15_笔记本评测-中关村在线...
- python蜡烛图预测_【Python量化投资】系列之SVR预测第二天开盘趋势和股价的正负统计分析(附代码)...
- 从共享文件夹到本地磁盘