0
我正在使用Python UDF,它在縮小階段導致錯誤。對於Pig的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;
如何A'的'的架構看起來像你遍歷?你使用哪種豬版本? –
我希望這是一個拼寫錯誤,但是你在'outputSchema'之前缺少了@(例如'@outputSchema(「score:double」)'。如果這個缺失,裝飾器將不會被調用,這意味着Pig不會知道輸出是雙倍的。 –