本地模式下的Pig错误

时间:2015-11-20 21:16:16

标签: apache-pig

我试图按降序查找工资,但输出结果不正确。我在当地模式下养猪。

我的输入如下:

a,a@xyz.com,5000

b,b@xyz.com,3000

c,c@xyz.com,10000

a,a1@xyz.com,2000

c,c1@xyz.com,40000

d,d@xyz.com,7000

e,e@xyz.com,1000

f,f@xyz.com,9000

f,f1@xyz.com,110000

因为我需要电子邮件和工资(在desc中)所以这就是我所做的。

A = load '/local_input_path' USING PigStorage(',');

B = foreach A generate $1,$2;

c = ORDER B by $1 DESC;

但输出并不像预期的那样:

(f@xyz.com,9000)

(d@xyz.com,7000)

(a@xyz.com,5000)

(c1@xyz.com,40000)

(b@xyz.com,3000)

(a1@xyz.com,2000)

(f1@xyz.com,110000)

(c@xyz.com,10000)

(e@xyz.com,1000)

当我没有提及B = foreach A generate $1,$2;并继续时,输出就像预期的那样。

对此有何建议?

2 个答案:

答案 0 :(得分:1)

将bytearray转换为int然后命令:

试试这段代码:

a = LOAD '/local_input_path' using PigStorage(',');

b = FOREACH a GENERATE $1,(int)$2;

c = order b by $1 DESC;
dump c;

答案 1 :(得分:0)

它将您的数字视为字符串并执行词典排序而不是数字。当您正在加载时,请指定名称和类型以帮助防止这种情况,并使您的代码更易读/可维护。 ...USING PigStorage(',') AS (letter:chararray, email:chararray, salary:int)