本地模式下的 Pig 错误
Pig error in local mode
我试图按降序找出薪水,但输出不正确。我是 运行 本地模式的猪。
我的输入如下:
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
因为我需要电子邮件和薪水(in desc)所以这就是我所做的。
A = load '/local_input_path' USING PigStorage(',');
B = foreach A generate ,;
c = ORDER B by 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 ,;
并继续时,输出符合预期。
对此有何建议?
它将您的数字视为字符串并执行词典排序而不是数字排序。当您加载时,分配名称和类型以帮助防止这种情况并使您的代码更 readable/maintainable。
...USING PigStorage(',') AS (letter:chararray, email:chararray, salary:int)
将bytearray转换成int然后排序:
试试这个代码:
a = LOAD '/local_input_path' using PigStorage(',');
b = FOREACH a GENERATE ,(int);
c = order b by DESC;
dump c;
我试图按降序找出薪水,但输出不正确。我是 运行 本地模式的猪。
我的输入如下:
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
因为我需要电子邮件和薪水(in desc)所以这就是我所做的。
A = load '/local_input_path' USING PigStorage(',');
B = foreach A generate ,;
c = ORDER B by 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 ,;
并继续时,输出符合预期。
对此有何建议?
它将您的数字视为字符串并执行词典排序而不是数字排序。当您加载时,分配名称和类型以帮助防止这种情况并使您的代码更 readable/maintainable。
...USING PigStorage(',') AS (letter:chararray, email:chararray, salary:int)
将bytearray转换成int然后排序:
试试这个代码:
a = LOAD '/local_input_path' using PigStorage(',');
b = FOREACH a GENERATE ,(int);
c = order b by DESC;
dump c;