一、储存HTML行储存和列储存
行储存能认知为一条历史记录储存带队,通过条件能查阅一aes统计数据。列储存,以表头涌进储存,能认知为完全相同的表头储存在一起。
二、Hive文档储存HTML
TEXTFILE
Hive统计状态模块的预设HTML,储存形式:行储存。能使用Gzip填充算法,但填充后的文档不全力支持split。在反HTML化过程中,必须逐一字符串判断是不是助记符和行Harcou,因而反HTML化开支会比SequenceFile高几倍。
SEQUENCEFILE
填充统计数据文档能节约系统资源,但Hadoop中有些原生植物填充文档的缺点之一就是不全力支持拆分。全力支持拆分的文档能博戈达的有数个mapper法律条文大统计数据文档,绝大多数文档不全力支持可拆分原因在于这些文档只能Cubzac读。Sequence File是可拆分的文档HTML,全力支持Hadoop的block级填充。
Hadoop API提供更多的一类十进制文档,以key-value的形式HTML化到文档中。储存形式:行储存。sequencefile全力支持四种填充优先选择:NONE,RECORD,BLOCK。Record填充率低,RECORD是预设快捷键,通常BLOCK会带来较RECORD更快的填充操控性。优势是文档和hadoop api中的MapFile是互相相容的
RCFILE
储存形式:统计数据按行逐次,每颗按列储存。结合了行储存和列储存的缺点:
RCFile 保证同一个行的统计数据位于同一个结点,因而位元解构的开支较低像列储存一样,RCFile 能利用列层次的统计数据填充,并且能埃唐佩县无谓的列加载统计数据新增:RCFile不全力支持任一形式的统计数据写操作,仅提供更多一类新增USB,这原因在于下层的 HDFS当前实际上全力支持统计数据新增写文档前部。行组大小不一:行组变小有利于提高统计数据填充的工作效率,但是可能会侵害统计数据的加载操控性,因为这样增加了 Lazy 解压操控性的耗用。而且行组变小会挤占更多的缓存,这会影响mammalian执行的其他MR工作台。考虑到储存空间和查阅工作效率两个方面,Facebook 优先选择4MB 作为预设的行组大小不一,当然也容许使用者另行优先选择模块进行配置。
ORCFILE
储存形式:统计数据按行逐次,每颗按照列储存。填充快,快速列读取。工作效率比rcfile高,是rcfile的改良版本。
三、创建语句和填充
3.1填充工具的对比
Hadoop编码/解码器形式,如下表所示
3.2、填充设置
HiveQL语句最终都将转换成为hadoop中的MapReduce job,而MapReduce job能有对处理的统计数据进行填充。
Hive中间统计数据填充
hive.exec.compress.intermediate:预设为false,设置true为激活中间统计数据填充功能,就是MapReduce的shuffle阶段对mapper产生中间填充,在这个阶段,优先优先选择一个低CPU开支:
set hive.exec.compress.intermediate=trueset mapred.map.output.compression.codec= org.apache.hadoop.io.compress.SnappyCodecset mapred.map.output.compression.codec=com.hadoop.compression.lzo.LzoCodec
最终输出结果填充
hive.exec.compress.output:使用者能对最终生成的Hive表的统计数据通常也需要填充。该模块控制这一功能的激活与禁用,设置为true来声明将结果文档进行填充。
mapred.output.compression.codec:将hive.exec.compress.output模块设置成true后,然后优先选择一个合适的编解码器,如优先选择SnappyCodec。设置如下(两种填充的编写形式是一样的):
set hive.exec.compress.output=true set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec或者或者set mapred.output.compress=trueset mapred.output.compression.codec=org.apache.hadoop.io.compress.LzopCodec
3.3、四种HTML的储存和填充设置(客户端设置填充格式)
TEXTFILE
create table if not exists textfiletable(site string,url string,pv bigint,label string)row format delimitedfields terminated by \tstored as textfile;插入统计数据操作:set hive.exec.compress.output=true;//输出结果填充开启 set mapred.output.compress=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;//填充和解填充编码类列表,用逗号分隔,将所用到解压和填充码设置其中insert overwrite table textfiletable select * from testfiletable;
SEQUENCEFILE
create table if not exists seqfiletable(site string,url string,pv bigint,label string)row format delimitedfields terminated by \tstored as sequencefile;插入统计数据操作:set hive.exec.compress.output=true; set mapred.output.compress=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec; SET mapred.output.compression.type=BLOCK;insert overwrite table seqfiletable select * from testfiletable;
RCFILE
create table if not exists rcfiletable(site string,url string,pv bigint,label string)row format delimitedfields terminated by \tstored as rcfile;插入统计数据操作:set hive.exec.compress.output=true; set mapred.output.compress=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec; insert overwrite table rcfiletable select * from testfiletable;
ORCFILE
create table if not exists orcfiletable(site string,url string,pv bigint,label string)row format delimitedfields terminated by \tstored as orc;插入统计数据操作:set hive.exec.compress.output=true; set mapred.output.compress=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec; insert overwrite table orcfiletable select * from testfiletable;
总结:
TextFile预设HTML,加载速度最快,能采用Gzip进行填充,填充后的文档无法split,无法博戈达处理了。SequenceFile填充率最低,查阅速度一般,将统计数据存放到sequenceFileHTML的hive表中,这时统计数据就会填充储存。四种填充HTMLNONE,RECORD,BLOCK。是可拆分的文档HTML.RCfile填充率最高,查阅速度最快,统计数据加载最慢。相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式储存形式,统计数据加载时操控性耗用较大,但是具有较好的填充比和查阅响应。统计数据仓库的特点是一次写入、多次加载,因而,整体来看,RCFILE相比其余两种HTML具有较明显的优势。在hive中使用填充需要灵活的形式,如果是统计数据源的话,采用RCFile+bz或RCFile+gz的形式,这样能很大程度上节约系统资源;而在计算的过程中,为了不影响执行的速度,能浪费一点系统资源,建议采用RCFile+snappy的形式,这样能整体提升hive的执行速度。至于lzo的形式,也能在计算过程中使用,只不过综合考虑(速度和填充比)还是考虑snappy适宜。