【问题标题】:Dataflow error - "Sources are too large. Limit is 5.00Ti"数据流错误 - “来源太大。限制为 5.00Ti”
【发布时间】:2015-05-19 13:50:08
【问题描述】:

我们有一个看起来像这样的管道:

BigQuery -> ParDo -> BigQuery

该表有大约 2B 行,不到 1TB。

运行 8 小时后,作业失败并出现以下错误:

May 19, 2015, 10:09:15 PM
S09: (f5a951d84007ef89): Workflow failed. Causes: (f5a951d84007e064): BigQuery job "dataflow_job_17701769799585490748" in project "gdfp-xxxx" finished with error(s): job error: Sources are too large. Limit is 5.00Ti., error: Sources are too large. Limit is 5.00Ti.

职位编号为:2015-05-18_21_04_28-9907828662358367047

这是一张大桌子,但不是那么大,Dataflow 应该可以轻松处理它。为什么它不能处理这个用例?

此外,即使作业失败,它仍然在图表上显示为成功。为什么?

【问题讨论】:

    标签: google-cloud-dataflow


    【解决方案1】:

    我认为该错误意味着您尝试写入 BigQuery 的数据超过了单个导入作业的 5TB limit set by BigQuery

    解决此限制的一种方法可能是将 BigQuery 写入拆分为多个作业,方法是使用多个写入转换,这样任何写入转换都不会收到超过 5TB 的数据。

    在您的写入转换之前,您可以有一个具有 N 个输出的 DoFn。对于每条记录,将其随机分配给其中一个输出。然后,N 个输出中的每一个都可以有自己的 BigQuery.Write 转换。写入转换都可以将数据附加到同一个表中,以便所有数据最终都在同一个表中。

    【讨论】:

    • 那太糟糕了。我虽然 Dataflow 可以“..执行任何规模的数据处理任务。”?!而这只有 5TB。我真的认为我们不应该将此类变通办法放入我们的管道中以规避数据大小限制——即使这些限制是在 BigQuery 方面。数据如何通过 Dataflow 服务加载到 BigQuery 中,对于用户来说应该是完全抽象的,我们不应该去处理这个问题。
    • PolleyG,感谢您的反馈。我们正在积极寻求在 Beta 期间减少这种类型的边缘摩擦。感谢您报告此问题,这非常有帮助。
    猜你喜欢
    • 2015-06-30
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2018-07-15
    • 2017-12-19
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多