如何使用猪将hdfs数据压缩到bzip2,这样在减压时它应该提供与它最初相同的目录结构。我是猪的新手。
我尝试使用bzip2进行压缩,但由于生成了许多映射器而导致生成了许多文件,因此在同一dir结构中恢复为纯文本文件(初始形式)变得困难。
就像在unix中如果我们使用tarball压缩bzip2然后在bzip2.tar的解压缩后给出了我最初的数据和文件夹结构。
例如压缩: - tar -cjf compress_folder.tar.bz2 compress_folder /
解压缩: - tar -jtvf compress_folder.tar.bz2
将提供完全相同的目录。
答案 0 :(得分:0)
方法1:
您可以尝试运行一个reducer来仅存储hdfs
上的1个文件。但妥协将是这里的表现。
set default_parallel 1;
压缩数据,在pig脚本中设置这些参数,如果不是这样尝试: -
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: