提问者:小点点

Dataflow: store.Client()导入错误或如何列出GCP桶的所有blob


我有一个使用本地DirectRunner的pythonSDK编写的apache-2.3.0管道。当我将运行器更改为DataflowRunner时,我收到一个关于“存储”不是全局的错误。

检查我的代码,我认为这是因为我正在使用存储在我的环境中的凭据。在我的python代码中,我只是这样做:

    class ExtractBlobs(beam.DoFn):
        def process(self, element):
            from google.cloud import storage
            client = storage.Client() 
            yield list(client.get_bucket(element).list_blobs(max_results=100))

真正的问题是我需要客户端,这样我就可以得到桶,这样我就可以列出blob。我在这里所做的一切都是为了列出blob。

因此,如果有人能给我指出在数据流中使用“store. Client()”的正确方向,或者如何在不需要客户端的情况下列出GCP桶的blob。

提前感谢![]我读过的:https://cloud.google.com/docs/authentication/production#auth-cloud-implicit-python


共1个答案

匿名用户

修正:好的,所以在进一步阅读和调查后,我发现我有在本地运行管道所需的库,但是数据流需要知道这些,以便将它们下载到它旋转的资源中。https://beam.apache.org/documentation/sdks/python-pipeline-dependencies/

所以我所做的就是使用我的google-cloud d-*要求创建一个需求. txt文件。

然后我像这样旋转我的管道:

    python myPipeline.py --requirements_file requirements.txt --save_main_session True 

最后一个标志是告诉它将您所做的导入保留在main中。