您好stackoverflow社区;
我是猪的新手,我有一个CSV文件,其中包含5个带标题的列,它们看起来像:
column1 | column2 | column3 | column4 | column5
test1012 | test2045 | test3250 | test4865 | test5110
test1245 | test2047 | test3456 | test4234 | test5221
..........
我想只对第1,3和4列进行排序,但我不知道如何按列标题进行过滤。
如果你可以请我指出能够完成我想要做的事情的正确功能,这将是很棒的。谢谢!
答案 0 :(得分:2)
假设您加载了类似下面的内容(假设它使用逗号作为分隔符),那么您可以使用ORDER BY功能。
myInput = LOAD 'myFile.csv' USING PigStorage(',') AS
(c1:chararray,c2:chararry,c3:chararray,c4:chararray,c5:chararry);
mySortedInput = ORDER myInput BY c1 ASC, c3, c4 ASC;
DUMP mySortedInput;
如果您想过滤掉那些列,那么在LOAD之后执行以下操作。
myInputWithLessCols = FOREACH myInput GENERATE
c1, c3, c4;
如果我完全误解了你想要做的就是过滤掉标题行,那么你可以在LOAD语句之后执行以下操作。
myInputWithoutHeaders = FILTER myInput BY c1 != 'column1'
AND c2 != 'column2' AND c3 != 'column3'
AND c4 != 'column4' AND c5 != 'column5';