下面是我们班的函数:
def labeling(self, value, labelMap, dtype='string'):
if dtype.value == 'string':
result = [i for v,i in labelMap.value if value==v][0]
return result
else:
result = [i for v,i in labelMap.value if value<v][0]
return result
def labelByValue(self, labelMap, dtype='string'):
labeling = self.labeling
labelMap = self.sc.broadcast(labelMap)
dtype = self.sc.broadcast(dtype)
self.RDD = self.RDD.map(labeling)但是,当我在"main“中调用下面的函数时,它报告的错误如下:”似乎您试图从广播中引用SparkContext“。
class.RDD.labelByValue((('a', 1), ('b', 2), ('c', 3)))我一个人什么也找不到。所以我提前来这里寻求帮助--谢谢。
发布于 2015-07-24 01:33:48
我终于完成了这个错误。
错误的一点是,用户定义的函数应该放在全局环境中,而不是类中。
所以标签应该是这样的:
def labeling(value, labelMap, dtype='string'):
if dtype.value == 'string':
result = [i for v,i in labelMap.value if value==v][0]
return result
else:
result = [i for v,i in labelMap.value if value<v][0]
return resulthttps://stackoverflow.com/questions/31396323
复制相似问题