首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可分还是分不分?

可分还是分不分?
EN

Stack Overflow用户
提问于 2015-09-03 17:51:19
回答 4查看 14.6K关注 0票数 19

根据这个云彩柱,Snappy是可分裂的。

对于MapReduce,如果您需要您的压缩数据是可拆分的,则BZip2、LZO和Snappy格式是可拆分的,但是GZip是不可分割的。可拆分性与HBase数据无关。

但是从hadoop的权威指南来看,Snappy是不可分割的。

网络上也有一些令人困惑的信息。有人说这是可分裂的,有人说是不可分割的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-07 02:40:51

两者都是正确的,但在不同的层次。

与Cloudera博客http://blog.cloudera.com/blog/2011/09/snappy-and-hadoop/相一致

需要注意的一点是,Snappy用于 容器格式,如序列文件或Avro,而不是直接在纯文本上使用,例如,因为后者是不可拆分的,不能使用MapReduce并行处理。这与LZO不同,在LZO压缩文件中可以索引LZO压缩文件以确定拆分点,以便在后续处理中有效地处理LZO文件。

这意味着,如果使用Snappy压缩整个文本文件,那么文件就不是可拆分的。但是,如果文件中的每条记录都是用Snappy压缩的,那么文件可以是可拆分的,例如在具有块压缩的序列文件中。

说得更清楚一点,是不一样的:

代码语言:javascript
运行
复制
<START-FILE>
  <START-SNAPPY-BLOCK>
     FULL CONTENT
  <END-SNAPPY-BLOCK>
<END-FILE>

代码语言:javascript
运行
复制
<START-FILE>
  <START-SNAPPY-BLOCK1>
     RECORD1
  <END-SNAPPY-BLOCK1>
  <START-SNAPPY-BLOCK2>
     RECORD2
  <END-SNAPPY-BLOCK2>
  <START-SNAPPY-BLOCK3>
     RECORD3
  <END-SNAPPY-BLOCK3>
<END-FILE>

Snappy块是,不是可拆分的,但是带有snappy块的文件是可拆分的

票数 33
EN

Stack Overflow用户

发布于 2016-08-26 16:03:47

hadoop中所有可拆分的编解码器都必须实现org.apache.hadoop.io.compress.SplittableCompressionCodec。从2.7的hadoop源代码来看,我们看到org.apache.hadoop.io.compress.SnappyCodec没有实现这个接口,所以我们知道它是不可分割的。

票数 4
EN

Stack Overflow用户

发布于 2018-09-06 19:21:23

我刚刚在HDFS上用Spark1.6.2测试了相同数量的工作人员/处理器,在一个简单的JSON文件之间并被snappy压缩:

  • JSON: 4个文件,每个12 by,Spark创建388个任务(1个任务由HDFS块完成)(4* 12GB /128 by => 384)
  • Snappy: 4个文件,每个3GB,火花创建4个任务

创建Snappy文件的方式如下:.saveAsTextFile("/user/qwant/benchmark_file_format/json_snappy", classOf[org.apache.hadoop.io.compress.SnappyCodec])

因此,对于JSON来说,Spark是无法拆分的。

但是,如果您使用parquet (或ORC)文件格式而不是JSON,这将是可拆分的(即使使用gzip)。

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

https://stackoverflow.com/questions/32382352

复制
相关文章

相似问题

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