0

削減フェーズでエラーが発生する Python UDF を使用しています。

java.lang.ClassCastException: java.lang.Double cannot be cast to org.apache.pig.data.DataByteArray

UDF のコードは次のとおりです。

import math
outputSchema("score:double")
def confidenceLowerBound(numerator, denominator, constant):
    raw_score = numerator * 1.0 / denominator
    normalized_interval = math.sqrt( raw_score * (1 - raw_score) / denominator )

    wilson_score = raw_score - constant * normalized_interval
    return wilson_score

これは、豚でudfを呼び出す方法です。

register 'confidence_interval_compute.py' using jython as pyutils;
...
..
A = FOREACH A GENERATE $0, $1, $2, $3, $4, pyutils.confidenceLowerBound($3, $4, 4) AS score PARALLEL 20;
4

1 に答える 1

0

@Ian Stevens がコメントで指摘したように、これはデコレータにタイプミスがあるためです。

使用する必要があります

@outputSchema("score:double")
于 2013-09-10T11:26:00.633 に答える