我是猪的新手,所以这可能是一个微不足道的问题。因此我无法得到合理的答案。
有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,因此不能以字符串格式进行。
答案 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;
根据您的使用案例和文件大小,还有其他方法。但我认为这是最灵活的。