使用pig过滤csv列

iovurdzv  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(375)

hi-stackoverflow社区;
我是新来的Pig,我有一个csv文件,其中包含5列标题它看起来像:
第1列|第2列|第3列|第4列|第5列
测试1012 |测试2045 |测试3250 |测试4865 |测试5110
测试1245 |测试2047 |测试3456 |测试4234 |测试5221。。。。。。。。。。
我只想排序列1,3和4,但我不知道如何按列标题过滤。
如果你能给我指出正确的功能来完成我想做的事情,那就太好了。谢谢!

8aqjt8rx

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';

相关问题