2016-06-11 108 views
0

如何使用猪将hdfs数据压缩到bzip2,这样在解压缩时它应该提供与最初相同的dir结构。我是猪新手。猪脚本压缩和解压bzip2中的hdfs数据

我试图使用bzip2进行压缩,但由于许多映射器正在生成,因此在同一目录结构中恢复为纯文本文件(初始格式)变得困难,所以它生成了许多文件。

就像在unix中如何使用压缩包压缩bzip2然后在bzip2.tar解压缩后给出的数据和文件夹结构完全相同。

如压缩 - 焦油-cjf compress_folder.tar.bz2 compress_folder/

减压: - 焦油-jtvf compress_folder.tar.bz2

会给完全相同目录ST。

回答

0

方法1:

你可以尝试运行一个减速器来存储hdfs只有1个文件。但妥协将在​​这里表现。

set default_parallel 1; 

压缩数据,设置在猪脚本这些参数,如果没有试过这样: -

set output.compression.enabled true; 
SET mapred.output.compression.codec 'org.apache.hadoop.io.compress.BZip2Codec'; 

只使用JsonStorage同时存储文件

STORE file INTO '/user/hduser/data/usercount' USING JsonStorage(); 

最终你也想读取数据,使用TextLoader

data = LOAD '/user/hduser/data/usercount/' USING TextLoader; 

方法2:

filecrush: file merge utility available at @Mr. github