ОБНОВЛЕНО: проблема была на самом деле проблема библиотеки.У меня должна была быть правильная версия apache-beam SDK с правильными версиями Google-Cloud:
gapic-google-cloud-pubsub-v1 == 0.15.4
gax-google-logging-v2 == 0.8.3
gax-google-pubsub-v1 == 0.8.3
google-api-core == 1.1.2 google-api-python-client ==1.6.7
google-apitools == 0.5.10
google-auth == 1.4.1
google-auth-httplib2 == 0.0.3
google-cloud-bigquery == 1.1.0
google-cloud-core == 0.28.1
google-cloud-datastore == 1.6.0
google-cloud-pubsub == 0.26.0
google-cloud-storage == 1.10.0
google-gax == 0.12.5
apache-beam == 2.3.0
Я смог решить эту проблему с помощью комбинации вещей, во-первых, я ничего не сериализовал (уродливый один лайнер в выходной) а второй использует threading.local ()
class ExtractBlobs(beam.DoFn):
def start_bundle(self):
self.threadLocal = threading.local()
self.threadLocal.client = storage.Client()
def process(self, element):
yield list(storage.Client().get_bucket(element).list_blobs(max_results=100))