Python \ PySpark代码:这不是死循环吗?
Python \ PySpark code: Isn't this an infinite loop?
我正在查看 class pyspark.mllib.feature.IDFModel
的 PySpark 代码
在
我很困惑为什么这不会创建无限循环?
这是class中的代码:
class IDFModel(JavaVectorTransformer):
def transform(self, x):
return JavaVectorTransformer.transform(self, x)
这是 JavaVectorTransformer 的代码Class
class JavaVectorTransformer(JavaModelWrapper, VectorTransformer):
def transform(self, vector):
if isinstance(vector, RDD):
vector = vector.map(_convert_to_vector)
else:
vector = _convert_to_vector(vector)
return self.call("transform", vector)
IDFModel.transform()
调用 JavaVectorTransformer.transform
进而 returns self.call("transform",vector)
奇怪的是,这似乎在没有创建无限循环的情况下起作用。
有什么想法吗?
参考link中JavaModelWrapper的代码https://spark.apache.org/docs/1.5.0/api/python/_modules/pyspark/mllib/common.html
self.call 不是对同一方法的递归调用。在调用 self.call 时调用父 class JavaModelWrapper 中有一个名为 "call" 的方法。
我正在查看 class pyspark.mllib.feature.IDFModel
的 PySpark 代码在
我很困惑为什么这不会创建无限循环?
这是class中的代码:
class IDFModel(JavaVectorTransformer):
def transform(self, x):
return JavaVectorTransformer.transform(self, x)
这是 JavaVectorTransformer 的代码Class
class JavaVectorTransformer(JavaModelWrapper, VectorTransformer):
def transform(self, vector):
if isinstance(vector, RDD):
vector = vector.map(_convert_to_vector)
else:
vector = _convert_to_vector(vector)
return self.call("transform", vector)
IDFModel.transform()
调用 JavaVectorTransformer.transform
进而 returns self.call("transform",vector)
奇怪的是,这似乎在没有创建无限循环的情况下起作用。
有什么想法吗?
参考link中JavaModelWrapper的代码https://spark.apache.org/docs/1.5.0/api/python/_modules/pyspark/mllib/common.html
self.call 不是对同一方法的递归调用。在调用 self.call 时调用父 class JavaModelWrapper 中有一个名为 "call" 的方法。