入门篇2-Hive常用文件格式、压缩方式、分割符

1.文件格式种类

名称详解是否支持spilt
TextFile行式存储,hive数据的默认存储格式,数据可以直接在hdfs上用cat命令查看,支持任意分割符,默认不压缩文件,无法区分数据类型,每个字段都均被认为是文本,可以指定多种压缩方式,所以存储体积大,磁盘开销大不可
SequenceFile行式存储,一种二进制文件,二进制文件,以<k,v>的方式序列化到文件中,支持多种压缩方式,相同数据体积比textfile要大,
RC按行分块,每个块按照列存储,有利于压缩和快速的列存取,能够节省存储空间
ORC数据按照行分块,每块按照列存储,会基于列创建索引,查询的时候会很快
ParquetFile列式存储,文件存储方式为二进制文件link

2.文件应用场景

名称应用场景
TextFile最简单的数据格式,便于和其他工具(Pig,grep,sed,awk)共享数据,便于查看和编辑;加载较快,适合于小型查询,查看具体数据内容的和测试操作。
SequenceFile可压缩、可分割,优化磁盘利用率和I/O;可并行操作数据,查询效率高,适用于数据量较小,大部分列的查询。
RC在ORC之前广泛应用的数据格式详解1详解2
ORC压缩快,快速列存取、是rcfile的改良版本,适用于Hive中大型的存储、查询,不能直接load详解
ParquetFileParquet能够很好的压缩和编码,有良好的查询性能,支持优先的模式演进,写速度通常比较慢,不支持update、insert,delete、ACID等特性,适用于字段数非常多,无更新、只取部分列的查询。

3.常用压缩方式

应用场景
压缩特性运用得当能提高性能,但运用不当也可能降低性能。其基本原则是:
CPU集型的job,少用压缩
IO密集型的job,多用压缩

名称简介
Gzip压缩率比较高,而且压缩/解压速度也比较快;hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;有hadoop native库;大部分linux系统都自带gzip命令,使用方便。
Bzip支持split;具有很高的压缩率,比gzip压缩率都高;hadoop本身支持,但不支持native;在linux系统下自带bzip2命令,使用方便,压缩/解压速度慢;不支持native
Snappy高速压缩速度和合理的压缩率;支持hadoop native库,不支持split;压缩率比gzip要低;hadoop本身不支持,需要安装;linux系统下没有对应的命令。
Lzo压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式;支持hadoop native库;可以在linux系统下安装lzop命令,使用方便。压缩率比gzip要低一些;hadoop本身不支持,需要安装;在应用中对lzo格式的文件需要做一些特殊处理(为了支持split需要建索引,还需要指定inputformat为lzo格式)

4.文本分割符

详解

5.指定方式

--------textfile---------------------
create table test(
man struct<name:string,agt:int> comment "个人信息"
,marry_info map<string,string> comment "婚姻信息"
,hobby array<string> comment "爱好"
)row format delimited 
fields terminated by '分割符' 
collection items terminated by '分割符' 
map keys terminated by '分割符‘
lines terminated by '分割符'
stored as 文件格式
tblproperties("文件格式.compress"="压缩格式");
eg:tblproperties("orc.compress"="snappy") --orc压缩方式设置

--------

Hadoop native库(Hadoop本地库)

官方构建

为啥要本地库

IO密集型&CPU密集型

IO密集型:O密集型指的是系统的CPU性能相对硬盘、内存要好很多,此时,系统运作,大部分的状况是CPU在等IO (硬盘/内存) 的读写操作,因此,CPU负载并不高。
密集型的程序一般在达到性能极限时,CPU占用率仍然较低,导致线程空余时间很多,因此IO密集型线程通常为CPU核心数的数倍,其计算公式为:IO密集型核心线程数 = CPU核数 / (1-阻塞系数)。使得线程进行 I/O 操作 CPU 空闲时,启用其他线程继续使用 CPU,以提高 CPU 的使用率。
CPU密集型:CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作CPU读写IO(硬盘/内存)时,IO可以在很短的时间内完成,而CPU还有许多运算要处理,因此,CPU负载很高。
	CPU密集表示该任务需要大量的运算,而没有阻塞,CPU一直全速运行。CPU密集任务只有在真正的多核CPU上才可能得到加速,而在单核CPU上,无论你开几个模拟的多线程该任务都不可能得到加速,因为CPU总的运算能力就只有这么多。通常,CPU密集型线程的数目只需要设置为CPU核心数的线程个数就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值