处理Pig中的tar头

时间:2013-05-24 18:27:58

标签: hadoop apache-pig

如果我在一堆* .tar.gz文件上运行Pig,PigStorage会处理解压缩,但tar中的文件之间的标题行不会被处理。有一个简单的方法来处理这个?或者我是否必须编写自己的RecordReader?那会是什么样的?

1 个答案:

答案 0 :(得分:5)

您可以使用tar动态清理标题。在您的Pig脚本中,执行:

--Call to tar that reads from stdin and outputs to stdout
DEFINE CLEANTAR `tar xvf - -O`;

--Now, remove tar headers from your data
cleaned = STREAM mydata THROUGH CLEANTAR;

编辑:添加了以下替代方案。

您还可以使用sed删除tar标头:

--Remove tar headers using sed
DEFINE CLEANTAR `sed 's/[^\n]*\o000//g'`;

--Now, remove tar headers from your data
cleaned = STREAM mydata THROUGH CLEANTAR;