首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ORC格式的LZO压缩

使用ORC格式的LZO压缩
EN

Stack Overflow用户
提问于 2015-03-29 17:16:31
回答 1查看 1.5K关注 0票数 0

我正在尝试将一些非常大的蜂窝表从文本格式转换为ORC格式,希望它能占用更少的存储空间,查询速度会更快。由于我们使用LZO作为我们整个资产的压缩,所以我也尝试将其用于ORC格式。

如果你们能提供帮助,我将不胜感激。

我使用的是Hadoop 2.4.0和Hive 0.13.1

根据下面的链接,似乎可以使用ORC格式的LZO压缩:

http://2013.berlinbuzzwords.de/sessions/orc-file-improving-hive-data-storage https://hive.apache.org/javadocs/r1.1.0/api/ql/org/apache/hadoop/hive/ql/io/orc/package-summary.html

但是当我做一些像这样的事情

代码语言:javascript
复制
create table sa_orc_lzo 
stored as orc  tblproperties ("orc.compress"="LZO")  
as select * from sa;

我得到以下错误:

代码语言:javascript
复制
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"data".......}
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:550)
at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:177)

**Caused by: java.lang.IllegalArgumentException: LZO is not available.
at org.apache.hadoop.hive.ql.io.orc.WriterImpl.createCodec**(WriterImpl.java:200)
at org.apache.hadoop.hive.ql.io.orc.WriterImpl.<init>(WriterImpl.java:175)
at org.apache.hadoop.hive.ql.io.orc.OrcFile.createWriter(OrcFile.java:369)
at org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat$OrcRecordWriter.write(OrcOutputFormat.java:83)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:649)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:793)
at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:87)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:793)
at org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:92)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:793)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:540)
... 9 more
**Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.io.orc.LzoCodec**
EN

回答 1

Stack Overflow用户

发布于 2015-05-08 06:03:12

不幸的是,你不能。有人需要实现org.apache.hadoop.hive.ql.io.orc.LzoCodec,但还没有实现。当我写ORC的时候,我把钩子放进去了,我打算回到它上面来,但我还没有。目前,我有太多的事情要做。我的建议是使用Snappy代替。Snappy的速度几乎和LZO一样快,而且效果很好。

它还没有完成的部分原因是LZO已经是GPL的,因此对它的任何绑定都必须在GPL下释放。由于Apache许可证与GPL不兼容,因此绑定不能托管在Apache上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29327461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档