我有一个文件max_rank.txt,其中包含:
1,a
2,b
3,c
第二个文件max_rank_add.txt:
d
e
f
我的预期结果是:
1,a
2,b
3,c,
4,d,
5,e
6,f
因此,我想为第二组值生成
RANK
,但是从大于第一组值的最大值开始。脚本的Beginig可能看起来像这样:
existing = LOAD 'max_rank.txt' using PigStorage(',') AS (id: int, text : chararray);
new = LOAD 'max_rank_add.txt' using PigStorage() AS (text2 : chararray);
ordered = ORDER existing by id desc;
limited = LIMIT ordered 1;
new_rank = RANK new;
但是我对最后一个最重要的行有问题,该行将
limited
的值添加到rank_new
的new_rank
中。你能给点建议吗?
问候
帕维尔
最佳答案
我找到了解决方案。
这两个脚本都可以工作:
rank_plus_max = foreach new_rank generate flatten(limited.$0 + rank_new), text2;
rank_plus_max = foreach new_rank generate limited.$0 + rank_new, text2;
这些不起作用:
rank_plus_max = foreach new_rank generate flatten(limited.$0) + flatten(rank_new);
2014-02-24 10:52:39,580 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 10, column 62> mismatched input '+' expecting SEMI_COLON
Details at logfile: /export/home/pig/pko/pig_1393234166538.log