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

Hadoop Pig将一个表中的数字乘以另一个表中的所有值,hadoop,apache-pig,Hadoop,Apache Pig,我有两张桌子: A: (feature:chararray, value:float) B:(multiplier:charray, value:float) 其中A是一个有数千行的表,B只有一行 我要做的是取A中的所有行,用A乘以B e、 g 我想要一张C表 C: [('f1', 3), ('f2', 4.6)] 有什么简单的方法吗?你可以做一个交叉和交叉。。。生成 X = A CROSS B; Y = FOREACH X GENERATE A::feature, A::value *

我有两张桌子:

A: (feature:chararray, value:float)

B:(multiplier:charray, value:float)
其中A是一个有数千行的表,B只有一行

我要做的是取A中的所有行,用A乘以B

e、 g

我想要一张C表

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

有什么简单的方法吗?

你可以做一个
交叉和
交叉。。。生成

X = A CROSS B;
Y = FOREACH X GENERATE A::feature, A::value * B::value;

上述代码尚未测试。

您可以对每个。。。生成

X = A CROSS B;
Y = FOREACH X GENERATE A::feature, A::value * B::value;

上述代码尚未测试。

如果您非常确定第二个表只有一行,则取第一列

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

做内部连接,你可以很容易地增加

假设第一个文件为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; 

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

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

做内部连接,你可以很容易地增加

假设第一个文件为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;