我一直关注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'
知道我做错了吗?
由于
答案 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示例。
编辑:重写答案,因为之前的解决方案无法按预期运行。