hi-stackoverflow社区;我是新来的Pig,我有一个csv文件,其中包含5列标题它看起来像:第1列|第2列|第3列|第4列|第5列测试1012 |测试2045 |测试3250 |测试4865 |测试5110测试1245 |测试2047 |测试3456 |测试4234 |测试5221。。。。。。。。。。我只想排序列1,3和4,但我不知道如何按列标题过滤。如果你能给我指出正确的功能来完成我想做的事情,那就太好了。谢谢!
8aqjt8rx1#
假设您加载了如下内容(假设它使用逗号作为分隔符),那么您就可以使用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;
如果您只想过滤掉那些列,那么在加载之后执行以下操作。
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';
1条答案
按热度按时间8aqjt8rx1#
假设您加载了如下内容(假设它使用逗号作为分隔符),那么您就可以使用order by功能了。
如果您只想过滤掉那些列,那么在加载之后执行以下操作。
如果我完全误解了您想要做的只是过滤掉标题行,那么您可以在load语句之后执行以下操作。