Управление параллельным использованием облачного хранилища Google с Python / Apache Beam? - PullRequest
0 голосов
/ 31 августа 2018

Я строю конвейер, используя Apache Beam в Python, и мне нужно избегать условий гонки при записи в файл в Google Cloud Storage.

Следующая ссылка описывает, как использовать управление параллелизмом в Google Cloud Storage с использованием gsutil.

https://cloud.google.com/storage/docs/gsutil/addlhelp/ObjectVersioningandConcurrencyControl#concurrency-control

Кто-нибудь знает, есть ли способ сделать то же самое с помощью Python или Apache Beam Python SDK?

1 Ответ

0 голосов
/ 31 августа 2018

Если вам необходимо выполнить определенные операции последовательно, лучше всего сделать группу по ключу, которая соберет их вместе.

Например, если у вас есть два разных элемента, записывающих в один и тот же файл GCS, вы захотите сделать что-то вроде:

(my_collection | beam.Map(lambda x: (x['filename'], x))
               | beam.GroupByKey()
               | beam.Map(write_each_value))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...