1

私はそのようなPig DESCRIBEを持っています:

DESCRIBE B;
B: {group: chararray, A: {name: chararray,age: int,gpa: float}}

Pigで計算したい∑B.A.gpa2

しかし、私が書くと:

FOREACH B {
    out = SUM(A.gpa * A.gpa);
}

次のような例外をスローします。

[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1039: <file test.pig, line xx, column xx> (Name: Multiply Type: null Uid: null)incompatible types in Multiply Operator left hand side:bag :tuple(gpa:float)  right hand side:bag :tuple(gap:float)

Pig グループに解決策を尋ねました。これはジラのリンクです

私の問題について他の提案がありますか?

私の一時的な解決策は

FOREACH B {
    tmp_out = FOREACH A GENERATE gpa*gap;
    out = SUM(tmp_out);
}
4

1 に答える 1

1

あなたの一時的な解決策はPIGにとって正しいです。PIG は単純なデータフロー言語であり、95% のソリューションをすぐに使用でき、残りの 5% は UDF を介して実行できることを思い出してください。UDF の書き方の良い例を見るには、LinkedIn の DataFuを参照してください。

于 2012-07-03T21:31:14.773 に答える