pyspark rdd map __getnewargs __([])不存在

时间:2018-03-02 04:00:19

标签: apache-spark pyspark

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 __([])不存在

1 个答案:

答案 0 :(得分:0)

您正在尝试使用地图访问其他数据框。这是不可能的。必须对驱动程序执行操作,它们不能成为工作者的执行者。

相关问题