Apache pig 如何在ApachePig中使用PigStorage存储gzip文件?
Apache Pig v0.7可以读取gzip文件,而无需我付出额外的努力,例如:Apache pig 如何在ApachePig中使用PigStorage存储gzip文件?,apache-pig,Apache Pig,Apache Pig v0.7可以读取gzip文件,而无需我付出额外的努力,例如: MyData = LOAD '/tmp/data.csv.gz' USING PigStorage(',') AS (timestamp, user, url); 我可以处理这些数据并将其输出到磁盘好的: PerUser = GROUP MyData BY user; UserCount = FOREACH PerUser GENERATE group AS user, COUNT(MyData) AS cou
MyData = LOAD '/tmp/data.csv.gz' USING PigStorage(',') AS (timestamp, user, url);
我可以处理这些数据并将其输出到磁盘好的:
PerUser = GROUP MyData BY user;
UserCount = FOREACH PerUser GENERATE group AS user, COUNT(MyData) AS count;
STORE UserCount INTO '/tmp/usercount' USING PigStorage(',');
但输出文件未压缩:
/tmp/usercount/part-r-00000
有没有办法告诉
STORE
命令以gzip格式输出内容?请注意,理想情况下,我想要一个适用于Pig 0.6的答案,因为我希望使用Amazon Elastic MapReduce;但是,如果有任何版本的Pig的解决方案,我都想听一听。对于Pig r0.8.0,答案很简单,只需将输出路径扩展为“.gz”(或“.bz”(如果您更喜欢bzip)
代码的最后一行应修改为:
STORE UserCount INTO '/tmp/usercount.gz' USING PigStorage(',');
根据您的示例,您的输出文件将作为
/tmp/usercount.gz/part-r-00000.gz
有关更多信息,请参阅:有两种方法:
usercount.gz
使用PigStorage(',')将UserCount存储到'/tmp/UserCount.gz'中代码>
将output.compression.enabled设置为true;
设置output.compression.codec org.apache.hadoop.io.compress.gzip代码代码>
根据的清管器文件,有两种方法可以做到这一点 使用“STORE”语句指定压缩格式 注意上面的陈述。Pig支持3种压缩格式,即GZip、BZip2和LZO。为了让LZO正常工作,您必须单独安装它。有关lzo的更多信息,请参阅 通过作业属性指定压缩 通过在pig脚本中设置以下属性,即通过以下代码
output.compression.enabled
和output.compression.codec
set output.compression.enabled true;
及
回答得很好。不幸的是,Amazon Elastic Map Reduce仅支持Pig v0.6.FYI:EMR当前默认运行Pig版本0.9.2,因此现在应该可以工作了。
set output.compression.enabled true;
set output.compression.codec com.hadoop.compression.lzo.LzopCodec;
set output.compression.codec org.apache.hadoop.io.compress.GzipCodec;
set output.compression.codec org.apache.hadoop.io.compress.BZip2Codec;