python-udf-for-pig:数据类型转换错误

tquggr8v  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(254)

我使用的是python自定义项,它在reduce阶段会导致错误。

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

以下是自定义项的代码:

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

这就是我用Pig来称呼自由基的方式。

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;
bmvo0sr5

bmvo0sr51#

正如@ianstevents在评论中指出的,这是因为您在decorator中有一个输入错误。
你应该使用

@outputSchema("score:double")

相关问题