У меня есть конвейер, который я могу выполнить локально без каких-либо ошибок.Я имел обыкновение получать эту ошибку в моем локально работающем конвейере
'Clients have non-trivial state that is local and unpickleable.'
PicklingError: Pickling client objects is explicitly not supported.
Я полагаю, что исправил это путем понижения до apache-beam = 2.3.0 Тогда локально это работало бы отлично.
Теперь я использую DataflowRunner и в файле needs.txt у меня есть следующие зависимости
apache-beam==2.3.0
google-cloud-bigquery==1.1.0
google-cloud-core==0.28.1
google-cloud-datastore==1.6.0
google-cloud-storage==1.10.0
protobuf==3.5.2.post1
pytz==2013.7
, но я снова получаю эту страшную ошибку
'Clients have non-trivial state that is local and unpickleable.'
PicklingError: Pickling client objects is explicitly not supported.
Почему получилось сообщение об ошибке с DataflowRunner, но не с DirectRunner?не должны ли они использовать одни и те же зависимости / среду?Любая помощь будет оценена.
Я читал, что это способ решить эту проблему, но когда я пробую это, я все еще получаю ту же ошибку
class MyDoFn(beam.DoFn):
def start_bundle(self, process_context):
self._dsclient = datastore.Client()
def process(self, context, *args, **kwargs):
# do stuff with self._dsclient
от https://github.com/GoogleCloudPlatform/google-cloud-python/issues/3191
Мои предыдущие ссылкипост, где я исправил это локально:
Использование start_bundle () в работе Apache-Beam не работает.Непередаваемое хранилище. Клиент ()
Заранее спасибо!