請幫助我.. ..真的很緊急..親愛的,即時消息堅持它自2個星期..打破了我的頭,但沒有結果。我是一個新手在明膠。 我有一個場景,我必須從csv文件過濾數據。 csv在hdfs上,並且有兩列。豬拉丁文問題
grunt>> fl = load '/user/hduser/file.csv' USING PigStorage(',') AS (conv:chararray, clnt:chararray);
grunt>> dump f1;
("first~584544fddf~dssfdf","2001")
("first~4332990~fgdfs4s","2001")
("second~232434334~fgvfd4","1000")
("second~786765~dgbhgdf","1000)
("second~345643~gfdgd43","1000")
什麼,我需要做的是我需要的第一個「〜」符號之前和CONCAT與CSV文件的第二列的值只提取第一個字。此外,我需要將返回的連接結果分組,並計算這些類似行的數量,然後創建一個新的csv文件作爲輸出,其中將再次出現2列。第一列是連接值,第二列是行數。 即
("first 2001","2")
("second 1000","3")
等等。
我在這裏寫了代碼,但它只是不工作。我用過STRSPLIT。它將分割輸入csv文件第一列的值。但我不知道如何提取第一個拆分值。 代碼如下給出:
convData = LOAD '/user/hduser/file.csv' USING PigStorage(',') AS (conv:chararray, clnt:chararray);
fil = FILTER convData BY conv != '"-1"'; --im using this to filter out the rows that has 1st column as "-1".
data = FOREACH fil GENERATE STRSPLIT($0, '~');
X = FOREACH data GENERATE CONCAT(data.$0,' ',convData.clnt);
Y = FOREACH X GROUP BY X;
Z = FOREACH Y GENERATE COUNT(Y);
var = FOREACH Z GENERATE CONCAT(Y,',',Z);
STORE var INTO '/user/hduser/output.csv' USING PigStorage(',');
嘿,你[讓我困惑這個問題](https://en.wikipedia.org/wiki/Pig_Latin)! – halfer
順便提一下,我不建議強調幫助論壇上的緊急事項 - 如果你寫得很好,你會在這裏得到快速的幫助。請注意,如果他們看到這一點,有些人就會失望,因爲所有的幫助都是在志願者的閒暇時間裏:)。 – halfer