Pig,用特定列的整数替换字符串

时间:2013-10-16 01:19:52

标签: hadoop apache-pig

我是猪的新手,所以这可能是一个微不足道的问题。因此我无法得到合理的答案。

有3列如下:

userid  itemid action
245      4     'view'
245      6     'click'
149      12     'buy'
149      1      'click'

依旧......

我有一个映射,例如:'view'=1 , 'click'=1.4 , 'buy'= 2.1等。

我想要的输出是:

userid  itemid action
245      4       1
245      6      1.4
149      12     2.1
149      1      1.4

简单的命令可以帮助我实现这一目标吗? 我需要在第3列上执行一些cacluation,因此不能以字符串格式进行。

1 个答案:

答案 0 :(得分:2)

使用这些映射值在HDFS中创建映射文件,例如:

action_string action_value
view 1
click 1.4
buy 2.1

假设此文件存储在<mapping_file>。然后只需加载此文件并将原始数据集与此文件合并:

mapping = LOAD '<mapping_file>' USING PigStorage() AS action_string, action_value;
joined = JOIN original BY action, mapping BY action_string USING 'replicated';
output = FOREACH joined GENERATE userid, itemid, action_value;

根据您的使用案例和文件大小,还有其他方法。但我认为这是最灵活的。