用于压缩和解压缩 bzip2 中的 hdfs 数据的 Pig 脚本

Posted

技术标签:

【中文标题】用于压缩和解压缩 bzip2 中的 hdfs 数据的 Pig 脚本【英文标题】:Pig script to compress and decompress the hdfs data in bzip2 【发布时间】:2016-06-11 14:15:33 【问题描述】:

如何使用 pig 将 hdfs 数据压缩到 bzip2,以便在解压缩时它应该提供与最初相同的 dir 结构。我是 pig 的新手。

我尝试使用 bzip2 进行压缩,但由于生成了许多映射器,它生成了许多文件,因此在相同的 dir 结构中恢复为纯文本文件(初始形式)变得很困难。

就像在 unix 中一样,如果我们使用 tarball 压缩 bzip2,然后在解压缩 bzip2.tar 后,会得到与最初完全相同的数据和文件夹结构。

例如压缩:- tar -cjf compress_folder.tar.bz2 compress_folder/

解压:- tar -jtvf compress_folder.tar.bz2

将给出完全相同的目录。

【问题讨论】:

【参考方案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:

filecrush: file merge utility available at @Mr. github

【讨论】:

以上是关于用于压缩和解压缩 bzip2 中的 hdfs 数据的 Pig 脚本的主要内容,如果未能解决你的问题,请参考以下文章

大数据中的压缩

linux中文件压缩和解压缩及安装程序包介绍

xz压缩和解压缩

压缩和解压缩命令

Linux 压缩和解压缩

python bz2模块