Поток данных: хранилище. Ошибка импорта () или как составить список всех больших двоичных объектов в сегменте GCP - PullRequest
0 голосов
/ 30 мая 2018

У меня есть конвейер apache-beam == 2.3.0, написанный с использованием Python SDK, который работает с моим DirectRunner локально.Когда я изменяю бегунок на 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))

Реальная проблема заключается в том, что мне нужен клиент, чтобы я мог получить ведро, чтобы я мог и затем перечислить большие двоичные объекты . Все, что я здесь делаю, - это то, чтобы я мог составить список больших двоичных объектов.

Так что, если кто-нибудь может указать мне правильное направление использования 'storage.Client ()' в Dataflow или какперечислять капли ведра GCP без необходимости клиента.

Заранее спасибо![+] Что я прочитал: https://cloud.google.com/docs/authentication/production#auth-cloud-implicit-python

1 Ответ

0 голосов
/ 30 мая 2018

Исправлено: Хорошо, так что после дальнейшего изучения и изучения выясняется, что у меня есть необходимые библиотеки для локального запуска конвейера, но Dataflow должен знать их, чтобы загружать их в раскрученные ресурсы.https://beam.apache.org/documentation/sdks/python-pipeline-dependencies/

, поэтому все, что я сделал, - это создал файл require.txt с моими требованиями google-cloud- *.

Затем я запускаю свой конвейер следующим образом:

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

, последний флаг должен сказать ему, чтобы он сохранял импортируемые вами данные в main.

...