嗨,stackoverflow 社区;
我是 pig 的新手,我有一个 CSV 文件,其中包含 5 列标题,如下所示:
专栏 1 |专栏2 |专栏3 |专栏4 | column5
测试1012 |测试2045 |测试3250 |测试4865 | test5110
测试1245 |测试2047 |测试3456 |测试4234 |测试5221
…………
我只想对第 1、3 和 4 列进行排序,但我不知道如何按列标题进行过滤。
如果您能指出可以完成我想做的事情的正确功能,那就太好了。谢谢!
最佳答案
假设您像下面这样加载它(假设它使用逗号作为分隔符),那么您可以只使用 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';
关于csv - 使用 pig 过滤 CSV 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29866071/