0
돼지 스크립트에서 사용하기 위해 Python UDF에 문제가 있습니다. 나는 문제가 내가 내 입력을한다고 생각한다. 델타은 실제 포맷이 아니지만 (파이썬 n00b) 그것을 고치는 방법을 모르겠다.데이터 형식이 일치하지 않아 비교가 실패 했습니까? Python의 UDF
참고 : Hadoop v.2.0.0의 Cloudera (cdh4.3) 배포판에서 Pig v.0.11.0, Python 2.4.3.
import org.apache.pig.impl.logicalLayer.schema.SchemaUtil as SchemaUtil
@outputSchema("adj:float")
def cumRelFreqAdj(deltas):
# create bins of increment 0.01
a = [i*-0.01 for i in range(100)]
a = a[1:len(a)]
b = [i*0.01 for i in range(101)]
a.extend(b)
a.sort()
bins = a
# build cumulative relative frequency distribution
cumfreq = [0]*200
for delta in deltas:
for bin in range(len(bins)):
if delta <= bins[bin]:
cumfreq[bin] += 1
cumrelfreq = [float(cumfreq[i])/max(cumfreq) for i in range(len(cumfreq))]
crf = zip(bins, cumrelfreq)
for relfreq in crf[:]:
if relfreq[1] > 0.11: # 10%ile
adj = relfreq[0] + 0.05
break
return adj
먼저 입력을 목록으로 변환해야합니까?
참고 사항 : numpy/scipy 라이브러리를 사용하는 것은 지금 당장 나를위한 옵션이 아닙니다. –