矩阵乘法阿帕奇猪 [英] matrix multiplication apache pig

查看:41
本文介绍了矩阵乘法阿帕奇猪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在猪拉丁语中执行矩阵乘法.到目前为止,这是我的尝试:

I am trying to perform matrix multiplication in pig latin. Here's my attempt so far:

matrix1 = LOAD 'mat1' AS (row,col,value);
matrix2 = LOAD 'mat2' AS (row,col,value);

mult_mat = COGROUP matrix1 BY row, matrix2 BY col;
mult_mat = FOREACH mult_mat {
    A = COGROUP matrix1 BY col, matrix2 BY row;
    B = FOREACH A GENERATE group AS col, matrix1.value*matrix2.value AS prod;
    GENERATE group AS row, B.col AS col, SUM(B.prod) AS value;}

然而,这行不通.我停在

However, this doesn't work. I get stopped at

A = COGROUP matrix1...

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 14, column 37>  mismatched input 'matrix1' expecting LEFT_PAREN

推荐答案

经过一番折腾,我想通了:

After some playing around, I figured it out:

matrix1 = LOAD 'mat1' AS (row,col,value);
matrix2 = LOAD 'mat2' AS (row,col,value);

A = JOIN matrix1 BY column FULL OUTER, matrix2 BY row;

B = FOREACH A GENERATE matrix1::row AS m1r, matrix2::column AS m2c, (matrix1::value)*(matrix2::value) AS value;

C = GROUP B BY (m1r, m2c);

multiplied_matrices = FOREACH C GENERATE group.$0 as row, group.$1 as column, SUM(B.value) AS val;

相乘矩阵应以输入 2 个矩阵的相同格式返回 matrix1*matrix2 的乘积,(行、列、值).

Multiplied matrices should return the product of matrix1*matrix2 in the same format that the 2 matrices were entered, (row, col, value).

这篇关于矩阵乘法阿帕奇猪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆