当我遇到术语“可拆分”时,我正在学习各种压缩编解码器。现在这个术语在我研究过的任何互联网资源和书籍中都没有太多解释,所以我想我可能在这里遗漏了一些微不足道的东西。我的第一个猜测是某些编解码器将元数据作为header/尾部添加到压缩文件中,这意味着如果压缩文件被拆分为多个HDFSblock进行存储,除非所有拆分都是合并在一起。如果是这种情况,如何将不可拆分文件的拆分(block)发送到映射器以输入到MR应用程序?我知道hadoop确实支持gzip(不可分割的编解码器),但我不明白具体是如何支持的。有人可以详细解释编解码器的不可分割性的含义是什么或分享一些相同的链接吗?
我已经创建了一个配置单元表,现在我想将活泼的压缩数据加载到表中。因此我做了以下事情:SETmapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;SEThive.exec.compress.output=true;SETmapreduce.output.fileoutputformat.compress=true;CREATETABLEtoydata_table(idSTRING,valueSTRING)ROWFORMATDELIMITEDFIELDSTERMI
我正在尝试读取使用hadoop-xz压缩的.xz文件使用pig脚本的编解码器。我试过的示例代码是,REGISTERhadoop-xz-1.4.jarSEToutput.compression.enabledtrue;SEToutput.compression.codecio.sensesecure.hadoop.xz.XZCodec;msg=LOAD'pigtest/newXZ.xz'USINGPigStorage();STOREmsgINTO'pigtest/output'USINGPigStorage();DUMPmsg;结果仍然是压缩格式。我做错了吗,还是我必须在pig里面使用X
问题在标题中——什么时候使用压缩比较好?好的,我的意思是处理速度更快。我的管道由多个MR作业组成,中间结果存储在序列文件中。数据是数字-时间序列。此外,碰巧一项工作的输出与输入的大小相同。因此,传输/存储的数据可能很大。我想知道我是否可以预期由于压缩而加速,或者压缩/解压缩数据需要更多时间? 最佳答案 使用快速编解码器(readsnappy)启用中间数据压缩几乎总是一个好主意。即使您的数据不可压缩,您也不会受到太多惩罚。 关于hadoop-何时使用压缩,我们在StackOverflow上
我有一些我想用pig处理的文件,它们已经被gzip压缩了。这些文件不以任何扩展名结尾。我看到的文档说pig根据文件扩展名确定压缩,所以有没有一种方法可以处理没有特殊文件扩展名的压缩文件。在这种情况下,更改文件扩展名不太可行。 最佳答案 唯一可能的方法是编写自己的加载器并处理这种情况。 关于hadoop-使用Pig处理没有扩展名的压缩文件,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question
对于不可拆分的文件,如GZIP,将只有一个map作业,因为GZIP文件不可拆分。是否有任何选项或优化将此类文件的所有block存储在一个数据节点中,以便我们至少可以节省网络带宽? 最佳答案 将gzip文件的HDFSblock大小增加到大于文件大小应该可以解决问题。有关设置每个文件的HDFSblock大小的更多信息,请参阅此answer 关于java-HDFS是否将不可拆分文件存储在一个数据节点中?,我们在StackOverflow上找到一个类似的问题: htt
在Hadoop程序中,我尝试对结果进行压缩,我写了如下代码:FileOutputFormat.setCompressOutput(job,true);FileOutputFormat.setOutputCompressorClass(job,GzipCodec.class);结果被压缩了,当我删除第一行时:FileOutputFormat.setCompressOutput(job,true);再次执行程序,结果还是一样,就是上面的代码FileOutputFormat.setCompressOutput(job,true);可选的?该代码的作用是什么? 最佳
我的问题是:有没有什么标准的压缩格式可以保证压缩后的数据流中不会出现某个定界符序列?我们想设计一个二进制文件格式,包含大块的顺序数据(3D坐标+其他数据,对问题来说并不重要)。每个block都应使用标准压缩格式进行压缩,例如GZIP、ZIP、...因此,文件结构如下:FileHeaderChunkDelimiterChunk1_Headercompress(Chunk1_Data)ChunkDelimiterChunk2_Headercompress(Chunk2_Data)...用例如下:文件应该在Hadoop中拆分读取,所以我们希望能够从文件中的任意字节位置开始,并通过查找分隔符序
HDFS存储支持压缩格式来存储压缩文件。我知道gzip压缩不支持夹板。假设现在该文件是一个gzip压缩文件,其压缩大小为1GB。现在我的问题是:此文件将如何存储在HDFS中(block大小为64MB)从这里link我开始知道gzip格式使用DEFLATE来存储压缩数据,DEFLATE将数据存储为一系列压缩block。但我无法完全理解并寻找广泛的解释。更多来自gzip压缩文件的疑惑:这个1GB的gzip压缩文件将有多少block。它会在多个数据节点上运行吗?如何将复制因子应用于此文件(Hadoop集群复制因子为3。)什么是DEFLATE算法?读取gzip压缩文件时采用了哪种算法?我在这里
5GB的gzip文件如何读入内存并压缩?解压前是否需要将整个文件读入内存?我的问题与在Hadoop中处理gzip文件有关,它不能像处理非压缩文件那样拆分处理。bzip2呢?有什么区别吗?谢谢, 最佳答案 不需要,这5GB不需要读入内存。如果愿意,您可以一次读取一个字节,然后以这种方式解压缩。gzip、bzip2和我所知道的所有压缩格式都是流格式。您可以读取小位并连续解压缩它们,而不必在文件中倒退。(.ZIP格式的末尾有标题信息,因此解压缩程序通常从那里向后查找条目。但这不是必需的,.ZIP文件可以作为流进行压缩和解压缩。)