Pig将表中的数字乘以另一个表的所有值

时间:2015-07-02 01:27:00

标签: hadoop apache-pig

我有两张桌子:

A: (feature:chararray, value:float)

B:(multiplier:charray, value:float)

其中A是包含数千行的表,B只有一行。

我想做的是获取A中的所有行并将B.value乘以B.value。

e.g。

A:[('f1', 1.5) , ('f2', 2.3)]

B:[('mul', 2)]

我想制作一张表C

C: [('f1', 3), ('f2', 4.6)]

有一种简单的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以执行FOREACH ... GENERATEX = A CROSS B; Y = FOREACH X GENERATE A::feature, A::value * B::value;

var min = $('#rbSlider').data('slider').options.min;
var max = $('#rbSlider').data('slider').options.max;

上述代码尚未经过测试。

答案 1 :(得分:2)

如果您非常确定第二个表只有一行,那么请选择第一列

第二个表的

并硬编码与第一个表中的最后一列相同的值,然后

进行内连接,你可以轻松地乘以

让第一个文件为plain.txt

(f1,1.5)
(f2,2)

这是第二个文件multi.txt

(mul,2)

A = load '/user/cloudera/inputfiles/plain.txt' USING PigStorage(',') AS(feature:chararray,value:double);

B = load '/user/cloudera/inputfiles/multi.txt' USING PigStorage(',') AS(operation:chararray,no:int); 

C = foreach A generate feature,value,'mul' as ope;  

D = join C by ope, B by operation; 

E = foreach D generate feature,(value*no) as multiplied_value;