apachepig-加载任意白色分隔文件的最佳代码



我想知道是否有人可以在以下方面进行改进。

我遇到了以空格分隔的文件,其中空白分隔符可以因行而异,甚至在一行中的字段,如此处所示:

whiteSpaceDelimitedFields.txt:

f11     f12 f13 ...
f22 f22  f23 ...
f32  f32    f33 ...

对于这种空白的一般情况,我使用以下PIG代码片段(如下输出所示):

grunt> A = LOAD 'whiteSpaceDelimitedFields.txt' USING TextLoader() AS (line:chararray);
grunt> B = FOREACH A GENERATE FLATTEN(STRSPLIT(line, '\s+')) AS (f0:type, f1:type, ...);
grunt> DUMP B;
(f11,f12,f13)
(f22,f22,f23)
(f32,f32,f33)
grunt>

我想象这种转换发生在map()方法中(而不是在Record Reader中动态地进行——尽管我对此不确定);但是在任何情况下,对于这种经常发生的情况,PIG是否有改进?也许是装载机的建议?

提前感谢

如果你不想创建自定义加载器,你可以看看Piggybank的MyRegExLoader:

REGISTER '/my_pig_home/contrib/piggybank/java/piggybank.jar'
A = LOAD 'data.txt' USING org.apache.pig.piggybank.storage.MyRegExLoader(
  '(\S+)\s+(\S+)\s+(\S+)') as 
  (field1:chararray, field2:chararray, filed3:chararray);
dump A;
(f11,f12,f13)
(f22,f22,f23)
(f32,f32,f33)

最新更新