小标
2018-12-05
来源 :
阅读 1245
评论 0
摘要:本文主要向大家介绍了【云计算】Hive中使用LZO压缩的方式,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】Hive中使用LZO压缩的方式,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
1.创建表的时候指定为lzo格式
CREATE EXTERNAL TABLE foo (
columnA string,
columnB string
) PARTITIONED BY (date string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY "\t"
STORED AS
INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
LOCATION '/path/xxxx/foo';
2.对于已经创建好的表,可以使用alter语句,修改为lzo存储格式。
ALTER TABLE foo
SET FILEFORMAT
INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";
3.当使用insert语句往lzo表里插入数据时,需要加入下面两个参数:
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;
4.查询使用count(*)有数据,但是select * 是没有数据的?
若发生将一个使用LZO压缩过的表数据导入一个没有被压缩过表内,
查询将出现这种状况,hdfs目录下明明有数据,count(*)有数据总量,但是select就是查询不出来,
具体原因:
表的结构是未压缩过的,但是数据是压缩过的,通过select(此处查询的方法跟表的结构有关系)查询压缩过的结果,肯定不会显示,
具体解决办法:
使用select的时候指定对应的压缩方法就可以查询出来压缩过的数据,类似于如下:
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号