def link2Page(x):
tisPageout = all_page_df.select("out_degree").where("page='%s'" % x[0]).take(1)[0].out_degree # all link point to x._1
if x[1] == None or len(x[1]) < 1:
return Row(x[0], 1 /float(N), tisPageout)
newScore = 0.0
for li in x[1]:
pageInfo = all_page_df.select("*").where("page='%s'" % li).take(1)[0] # all link point to x._1
newScore += pageInfo.score / pageInfo.out_degree
newScore = newScore * d_global + (1 - d_global) / float(N)
return Row(x[0], newScore, tisPageout)
in_rdd.map(link2Page)
all_page_df有3列:page,score,out_degree。
in_rdd有2列:page,inlinks。
inlinks是一种列表。
对于inlinks中的每个项目,我想在数据框all_page_df中找到相应的分数和out_degree。
当我运行这段代码时,错误:
pickle.PicklingError:无法序列化对象:Py4JError:错误 在拨打o166 .__ getnewargs__时发生了。跟踪:py4j.Py4JException: 方法__getnewargs __([])不存在
答案 0 :(得分:0)
您正在尝试使用地图访问其他数据框。这是不可能的。必须对驱动程序执行操作,它们不能成为工作者的执行者。