我的核心pyspark代码在forloop中。
global_v = np.random.rand(feature_num, vec_dim)
global_v_bc = sc.broadcast(global_v)
for i in range(epoch):
s1 = train_rdd.repartition(500)\
.mapPartitions(lambda x:fit(x, global_v_bc))\
.reduceByKey(lambda x,y:[x[0]+y[0], x[1]+y[1], x[2]+y[2]])\
.map(lambda x:x[1])
s2 = s1.take(1)[0]
s1.unpersist()
logging.info("epoch {} train-loss:{}".format(i, s2[0]/s2[1]))
global_v_bc.destroy()
global_v_bc = sc.broadcast(s2[2]/s2[1])
这是一个简单的fm模型。它可以在每个分区中更新v并重新广播以进行下一个循环,但是在运行时跳过了许多阶段。
有人可以帮我吗?
这是Web UI内容: