【发布时间】:2018-11-05 05:31:11
【问题描述】:
我已经使用 Spark 构建了一个 Word2Vec 模型并将其保存为模型。现在,我想在另一个代码中使用它作为离线模型。我已经加载了模型并用它来呈现一个单词的向量(例如你好)并且效果很好。但是,我需要在 RDD 中使用 map 来调用它。
当我在 map 函数中调用 model.transform() 时,它会抛出这个错误:
“您似乎正在尝试从广播中引用 SparkContext” 例外:您似乎正试图从广播变量、操作或转换中引用 SparkContext。 SparkContext 只能在驱动程序上使用,不能在它在工作人员上运行的代码中使用。有关详细信息,请参阅 SPARK-5063。
代码:
from pyspark import SparkContext
from pyspark.mllib.feature import Word2Vec
from pyspark.mllib.feature import Word2VecModel
sc = SparkContext('local[4]',appName='Word2Vec')
model=Word2VecModel.load(sc, "word2vecModel")
x= model.transform("Hello")
print(x[0]) # it works fine and returns [0.234, 0.800,....]
y=sc.parallelize([['Hello'],['test']])
y.map(lambda w: model.transform(w[0])).collect() #it throws the error
非常感谢您的帮助。
【问题讨论】:
标签: python apache-spark pyspark apache-spark-mllib word2vec