Google Dataflow python快速入门错误 - GcsIO没有属性

时间:2017-02-26 20:37:46

标签: python google-cloud-dataflow

我一直关注Dataflow Python Quickstart并在运行wordcount示例管道时出错:

  

...    文件“apache_beam / io / fileio.py”,第281行,在glob中      返回gcsio.GcsIO()。glob(路径,限制)   AttributeError:'NoneType'对象没有属性'GcsIO'

我尝试使用自己的管道获得相同的结果。我不知道这里的问题是什么,因为我认为我完全遵循了教程,这个错误似乎与读/写转换有关

  

Traceback(最近一次调用最后一次):文件   “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py”   第162行,在_run_module_as_main中       “ main ”,fname,loader,pkg_name)文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py”,   第72行,在_run_code中       run_globals中的exec代码文件“/Users/Alex/beam/sdks/python/apache_beam/examples/wordcount.py”,行   116,在       run()文件“/Users/Alex/beam/sdks/python/apache_beam/examples/wordcount.py”,行   87,在奔跑       lines = p | 'read'>> ReadFromText(known_args.input)文件“apache_beam / io / textio.py”,第378行, init       skip_header_lines = skip_header_lines)文件“apache_beam / io / textio.py”,第87行, init       validate = validate)文件“apache_beam / io / filebasedsource.py”,第97行, init       self._validate()文件“apache_beam / io / filebasedsource.py”,第171行,在_validate中       if len(fileio.ChannelFactory.glob(self._pattern,limit = 1))< = 0:文件“apache_beam / io / fileio.py”,第281行,在glob中       返回gcsio.GcsIO()。glob(路径,限制)AttributeError:'NoneType'对象没有属性'GcsIO'

知道我做错了吗?

由于

2 个答案:

答案 0 :(得分:1)

这是因为您没有安装google-apitools软件包(代码中提到了这一点,但应该更好地记录)。

尝试在虚拟环境中运行pip install google-apitools,然后重新运行管道(请注意,您需要在系统中安装Google Cloud凭据)。

答案 1 :(得分:0)

只是安装google-apitools并没有为我解决问题。我必须直接从源代码安装SDK,包括在{SDK} egg-info中找到的gcp中定义的requires.txt依赖项:

# run this in your virtualenv
SDK_PATH=sdks/python
pip install -e $SDK_PATH[gcp]

通过gcloud auth application-default login登录,然后我可以成功运行wordcount示例。

编辑:重写答案,因为之前的解决方案无法按预期运行。