它的发生是由于Python的后期绑定,而不是特定于(Py)Spark的。
i将在
lambda p : int(p) +i使用时(而不是在定义时)查找。通常,它是指何时调用它,但在此特定上下文中,它是序列化发送给工作人员的时间。
您可以例如执行以下操作:
def f(i): def _f(x): try: return int(x) + i except: pass return _fdata = sc.parallelize(["1", "2", "3"])splits = [data.map(f(i)) for i in range(4)][rdd.collect() for rdd in splits]## [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]



