Pig Latin - 从不同的包中增加价值?

时间:2014-02-24 09:32:00

标签: hadoop apache-pig

我有一个文件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,但是从第一组的值开始大于max。

脚本的开头可能如下所示:

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;

但是我最后一个问题是,limitedrank_new增加new_rank到{{1}}的价值。

你能提出任何建议吗?

此致 的Pawel

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 这两个脚本都有效:

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