我正在尝试用python编写Hive UDF,这会加载一个pickle对象(基本上是一组线性模型权重)。从泡菜中读取的这些权重用于对配置单元表中的一组观察结果进行评分。计算完分数之后,我还想根据从同一个Hive表中收到的真实值来更新权重,以便在更新的权重上对下一次观察评分。
类似这样的东西:
Python UDF代码:
import pickle
import sys
import numpy as np
betas = pickle.load(open('B.pkl','rb'))
for line in sys.stdin:
data = line.strip().split('\t')
X = np.array(data[:-1])
y = np.array(data[-1])
ycap = sigmoid(np.dot(betas,X))
new_beta = np.dot(np.dot(np.linalg.inv(np.dot(X.T,X)),X.T),y)
我确实读过关于在蜂巢udf中使python对象在所有核心(状态udtf)上持久化的信息。谁能帮我提供示例代码?
谢谢!