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