当前位置: 首页 > 知识库问答 >
问题:

谷歌云数据流因工作人员失联导致组合功能失效

岳奇逸
2023-03-14

我的数据流在我的组合函数中始终失败,除了以下条目之外,日志中没有报告错误:

 A work item was attempted 4 times without success. Each time the worker eventually lost contact with the service.

我使用的是Apache Beam Python SDK 2.4.0。我已经尝试使用CombinePerKey和CombineGlobally执行此步骤。在这两种情况下,管道在组合函数中都失败了。当使用较小的数据量运行时,管道完成。

使用n1-highmem-4workers也会出现同样的失败。当我检查Stackdriver时,我没有看到错误,但是有三种警告:找不到会话文件拒绝拆分处理停顿。我的输入集合大小显示,它有17000个元素,分布在60 MB,但Stackdriver有一个声明,说我在一个工人身上使用了25 GB,这正在接近最大值。对于这个输入,在我的组合中创建的每个累加器应该占用大约150 MB内存。我的管道是否创建了太多累加器,耗尽了它的内存?如果是,我如何告诉它更频繁地合并累加器或限制创建的数量?

我确实有一个错误日志条目来验证我的工人是由于OOM而死亡的。它只是没有标记为工作者错误,这是数据流监视器的默认筛选。

管道定义类似于:

table1 = (p | "Read Table1" >> beam.io.Read(beam.io.BigQuerySource(query=query))
     | "Key rows" >> beam.Map(lambda row: (row['key'], row)))
table2 = (p | "Read Table2" >> beam.io.Read(beam.io.BigQuerySource(query=query))
     | "Key rows" >> beam.Map(lambda row: (row['key'], row)))

merged = ({"table1": table1, "table2": table2}
     | "Join" >> beam.CoGroupByKey()
     | "Reshape" >> beam.ParDo(ReshapeData())
     | "Key rows" >> beam.Map(lambda row: (row['key'], row)))
     | "Build matrix" >> beam.CombinePerKey(MatrixCombiner())  # Dies here
     | "Write matrix" >> beam.io.avroio.WriteToAvro())

共有1个答案

曹自怡
2023-03-14

用更少的工人运行导致更少的蓄能器和管道的成功完成。

 类似资料:
  • 我在谷歌云平台上运行数据流作业,我得到的一个新错误是“工作流失败”,没有任何解释。我得到的日志如下: 我该怎么找出哪里出了问题?对象上的权限不应该有问题,因为类似的作业会成功运行。当我试图从谷歌云控制台重新运行模板时,我会收到消息: 找不到此模板的元数据文件 但是我能够启动模板,现在它成功运行。这可能与超额配额有关吗?我们刚刚增加了数据流的CPU和IP配额,我将并行运行的作业从5个增加到15个,以

  • 我创建了一个服务帐户,并为其分配了访问云功能的权限: gcloud beta函数add-iam-policy-binding MyFunction--member=serviceaccount:cf-access@my-project.iam.gserviceaccount.com--role=roles/cloudfunctions.admin 产出: 现在,我下载了服务帐户json文件。 所以

  • 当我运行gcloud函数deploy gcp_test——trigger resource xxx-test-123——trigger event google时。存储对象我发现语法错误。 错误:(gcloud.functions.deploy)操作错误:code=3,message=Function load错误:文件索引中的代码。无法加载js。你的代码中有语法错误吗?详细堆栈跟踪:/user\

  • 从今天开始,我无法使用gCloud cli部署云功能。 下面是我部署云功能的gloud命令: 我有个错误: 部署功能(可能需要一段时间-最多2分钟)...失败。 错误:(gcloud.functions.deploy)操作错误:代码=3,消息=生成失败:生成已超时 我曾经在一个小时前编写过相同的脚本,但现在,团队中没有人能够部署云功能,并得到相同的错误。 在stackDrive日志中,我只看到以下

  • 问题内容: 简而言之,问题 :执行带有子聚合的查询时,内部聚合为什么在某些情况下会丢失数据? 详细问题 :我有一个带有子聚合(存储桶中的存储桶)的搜索查询,如下所示: 如果我执行此查询,对于某些external_docs,我不会收到与之关联的所有inner_docs。在下面的输出中,有三个用于外部文档key_1的内部文档。 现在,我添加了一个查询,以单选一个反而应该在前20个中使用的externa

  • 刚刚完成Hello World谷歌云功能教程,收到以下响应头: