LZO压缩
数据保存在HDFS上面可以选取LZO压缩形式。LZO压缩的特点是可以切片
但是hadoop本身并不支持lzo压缩需要配置。详见Hadoop LZO压缩配置
两种方式,分别查询压缩数据有多少行
select * from ods_base_province;
查询得到34行
select count(*)from ods_base_province;
查询得到35行
两次查询结果不一致。
原因是select * from ods_log不执行MR操作,直接采用的是ods_log建表语句中指定的DeprecatedLzoTextInputFormat,能够识别lzo.index为索引文件。
select count(*) from ods_log执行MR操作,会先经过hive.input.format,其默认值为CombineHiveInputFormat,其会先将索引文件当成小文件合并,将其当做普通文件处理。更严重的是,这会导致LZO文件无法切片。
hive > set hive.input.format;
hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
解决办法:修改CombineHiveInputFormat为HiveInputFormat
hive >set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
修改只在当前会话生效








网友评论