Beam mongoio DisplayDataItem Value {} 是不受支持的类型

Beam mongoio DisplayDataItem Value {} is of an unsupported type

当我尝试通过

将文档写入mongodb时
         | "Write User Doc to Mongo" >> beam.io.WriteToMongoDB(uri=MONGO_URI,
                                                               db="dbname",
                                                               coll="col_name"
                                                               ))

错误ValueError: Invalid DisplayDataItem. Value {} is of an unsupported type.

ERROR:root:Error while visiting Write User Doc to Mongo/ParDo(_WriteMongoFn)
Traceback (most recent call last):
  File "beam_home.py", line 317, in <module>
    run()
  File "beam_home.py", line 312, in run
    p.run().wait_until_finish()
  File "/usr/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 406, in run
    self._options).run(False)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 419, in run
    return self.runner.run_pipeline(self, self._options)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/runners/dataflow/dataflow_runner.py", line 469, in run_pipeline
    super(DataflowRunner, self).run_pipeline(pipeline, options)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/runners/runner.py", line 158, in run_pipeline
    pipeline.visit(RunVisitor(self))
  File "/usr/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 447, in visit
    self._root_transform().visit(visitor, self, visited)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 824, in visit
    part.visit(visitor, pipeline, visited)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 824, in visit
    part.visit(visitor, pipeline, visited)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 827, in visit
    visitor.visit_transform(self)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/runners/runner.py", line 153, in visit_transform
    self.runner.run_transform(transform_node, options)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/runners/runner.py", line 196, in run_transform
    return m(transform_node, options)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/runners/dataflow/dataflow_runner.py", line 807, in run_ParDo
    transform_node.transform.output_tags)
  File "/usr/local/lib/python2.7/site-packages/apache_beam/runners/dataflow/dataflow_runner.py", line 590, in _add_step
    DisplayData.create_from(transform_node.transform).items])
  File "/usr/local/lib/python2.7/site-packages/apache_beam/transforms/display.py", line 274, in get_dict
    self.is_valid()
  File "/usr/local/lib/python2.7/site-packages/apache_beam/transforms/display.py", line 246, in is_valid
    .format(self.value))
ValueError: Invalid DisplayDataItem. Value {} is of an unsupported type.

好像是这个引起的codes

    if extra_client_params is None:
      extra_client_params = {}
    if not isinstance(db, str):

看来我必须设置 extra_client_params of WriteToMongoDB。这是默认行为还是我遗漏了什么?

不幸的是,这是一个错误。将在 2.16.0 中对其进行修复,应该会在接下来的几周内发布。

主要问题就在这里:https://github.com/apache/beam/blob/v2.15.0/sdks/python/apache_beam/io/mongodbio.py#L472

显示数据不支持字典类型的参数,我们正在通过规范。要解决该错误,不幸的是,您必须在本地 Beam 代码中覆盖该行为 :( - 或等待几周 2.16.0 :)