pig,将字符串替换为指定列的整数

bq3bfh9z  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(465)

我是新来的Pig,所以这可能是一个微不足道的问题。我无法得到一个合理的答案,因此问这个问题。
有3列,如下所示:

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

等等。。。
我有一个给定的Map,例如: '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列执行一些计算,因此不能使用字符串格式。

omhiaaxx

omhiaaxx1#

使用这些Map值在hdfs中创建Map文件,如:

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;

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

相关问题