Escribí código pyton que lee datos de la colección mongodb y los escribe en gcs bucket.
Mi tubería de flujo de datos es la siguiente:
p | ReadFromMongoDB(uri='mongodb+srv://mongo_url',db='db_name',coll='column_name',bucket_auto=True) | "WriteMyFile" >> beam.io.WriteToText('gs://bucket_name/file123.json') p.run()Mi canalización de flujo de datos falla con el siguiente error:
pymongo.errors.ConfigurationError: The "dnspython" module must be installed to use mongodb+srv:// URIsSegún este documento, pymongo (que es una dependencia requerida para resolver el problema de dnspython) ya está instalado en los trabajadores de flujo de datos. ¿Qué más había que hacer?
Es probable que esto se deba a que el trabajador de flujo de datos solo instala los requisitos básicos de pymongo. Y dnspython está incluido en las dependencias adicionales de pymongo, por lo que tendrá que usar pymongo[srv] como dependencia para resolver el módulo dnspython. Puede intentar incluir pymongo[srv]== en sus requisitos.txt y luego enviar la canalización con el indicador --requirements_file , hará que el trabajador de flujo de datos instale las dependencias de python requeridas cuando se inicie el contenedor.