Python 3.x pyspark中具有多变量输入的自定义映射函数返回错误结果

Python 3.x pyspark中具有多变量输入的自定义映射函数返回错误结果,python-3.x,numpy,matrix,parallel-processing,pyspark,Python 3.x,Numpy,Matrix,Parallel Processing,Pyspark,作为我项目的一部分,我试图通过使用一个映射函数对大量矩阵执行并行化规范化操作,该函数将矩阵进行处理,并将每个维度的最小值和最大值封装为向量作为输入变量。代码如下所示: import numpy as np from functools import partial def cf(A,MinValues,MaxValues): print("Result is ##################",A=(A-MinValues)/(MaxValues-MinValues)) A=(

作为我项目的一部分,我试图通过使用一个映射函数对大量矩阵执行并行化规范化操作,该函数将矩阵进行处理,并将每个维度的最小值和最大值封装为向量作为输入变量。代码如下所示:

import numpy as np
from functools import partial

def cf(A,MinValues,MaxValues):
   print("Result is ##################",A=(A-MinValues)/(MaxValues-MinValues))
   A=(A-MinValues)/(MaxValues-MinValues)
   return A

if __name__=='__main__':
   AMatrix=np.matrix([[1,5,9],[4,8,3],[7,2,6]])
   MinMatrix=np.matrix([1,2,3])
   MaxMatrix=np.matrix([7,8,9])
   ........
   sc.parallelize(AMatrix).map(partial(cf,MinValues=MinMatrix,MaxValues=MaxMatrix)).collect()
在我运行上面的代码之后,在处理过程中,它将通过打印操作在终端上显示正确的答案,但是最后它将始终显示[[None]、[None]、[None]],这意味着(我猜)在map()操作之后,spark只能收集包含[None]元素的列表

这里的古鲁能告诉我这里发生了什么吗?实现该功能的正确方法是什么

很好,我运行了以下代码(python 2.7):

这就是结果:

[matrix([[0, 0, 1]]), matrix([[0, 1, 0]]), matrix([[1, 0, 0]])]

我看不出问题所在。

因为您发布的代码不包含任何
print()
-很难说它来自哪里…这意味着(我猜)在map()操作之后,spark只能收集一个包含[无]元素的列表。
[matrix([[0, 0, 1]]), matrix([[0, 1, 0]]), matrix([[1, 0, 0]])]