我已经编写了从mongodb收集数据并将其写入gcs桶的python代码。
我的数据流管道如下:
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()
我的数据流管道失败,错误如下:
pymongo.errors.ConfigurationError: The "dnspython" module must be installed to use mongodb+srv:// URIs
根据本文档,pymongo(它是解决dnspython问题所需的依赖项)已经安装在数据流工作者中。还有什么需要做的?
这可能是因为数据流工作者只安装pymongo的基本要求。并且dnspython包含在pymongo的额外依赖项中,所以你必须使用pymongo[srv]作为依赖项来解析dnspython模块。你可以尝试在你的require .txt中包含pymongo[srv]==,然后提交带有--requirements_file
标志的管道,它将使dataflow worker在启动容器时安装所需的python依赖项。