我尝试运行数据流管道,该管道使用与以下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存储桶并从那里加载它?

10-08 12:59