数据流写入数据存储:“消息:数据存储事务或写入太大。”

2024-04-19 18:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是从数据流/apachebeam开始。 我用Python编写了一个数据流管道,将一个大的产品目录(存储在JSON文件中的50K个产品)导入数据存储。 管道在本地计算机(DirectRunner)上运行良好,但在DataflowRunner上失败,并显示以下错误消息:

RPCError: datastore call commit [while running 'write to datastore/Write Mutation to Datastore'] failed: Error code: INVALID_ARGUMENT. Message: datastore transaction or write too big.

我的猜测是数据存储无法处理管道的写入速率,但我不确定如何才能抑制数据流管道中的写入。在

我正在使用WriteToDatastore转换来写入数据存储:

^{pr2}$

我的管道是这样的:

with beam.Pipeline(options=pipeline_options) as p:
(p  # pylint: disable=expression-not-assigned
 | 'read from json' >> ReadFromText(known_args.input, coder=JsonCoder())
 | 'create entity' >> beam.Map(
     EntityWrapper(known_args.namespace, known_args.kind,
                   known_args.ancestor).make_entity)
 | 'write to datastore' >> WriteToDatastore(known_args.dataset))

提前谢谢你的帮助。在


Tags: to数据json管道args数据流writeoptions
1条回答
网友
1楼 · 发布于 2024-04-19 18:22:57

看起来不像是写速率问题。这个错误信息意味着突变超出了系统的限制。原因可能包括:

  • 单笔交易超过500个实体
  • 单笔交易超过10兆字节
  • 单个实体超过1MiB
  • 一个实体的总综合索引大小超过2MiB

您可以在我们的Limits documentation中阅读有关云数据存储系统限制的更多信息。在

相关问题 更多 >