我尝试运行数据流管道,该管道使用与以下pickle文件集成的python文件:
数据流
from stopwords import StopWords
stopwords = StopWords()
...
data = (pipeline | 'read' >> ReadFromText (gs://some/inputData.txt)
| 'stopwords' >> beam.Map(lambda x:{'id':x['id'],'text': stopwords.validate(x['text'])}))
stopwords.py
class StopWords:
def __init__ (self):
module_dir = os.path.dirname(__file__)
self.words = pickle.load(open(os.path.join(module_dir, 'model/sw.p'), "rb"))
但是,我发现了一个错误:
IOError:[Errno 2]没有这样的文件或目录:
'/usr/local/lib/python2.7/dist-packages/dataflow/model/sw.p'
我尝试调试
self.words
,它运行平稳。但是,当我在Google Cloud Dataflow作业中运行它时,它解决了一个问题。有人可以帮忙吗?
最佳答案
您的StopWords
类正试图从与sw.p
文件相同的目录中加载模型(stopwords.py
),但似乎模型尚未与代码一起部署。
也许尝试将本地拥有的sw.p
文件放入Google Cloud Storage存储桶并从那里加载它?