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

更新 BigQuery 架构时的延迟

颛孙信厚
2023-03-14

我在更新BigQuery模式时遇到了一些延迟问题。

我有一个表,它接收流式插入,并且架构在需要时会自动更新。问题在于,架构更新似乎在一段时间内不会生效,并且在该持续时间内进行的插入会删除新列的值。

我从2016年发现了这个答案,它说在更改生效之前可能会有长达5分钟的延迟。

这种情况仍然存在吗?您如何解决这一问题?如果答案是超时,那么在写入新列之前应该等待多长时间?

共有1个答案

封鸿雪
2023-03-14

为了获得关于这个主题的更有意义的信息,我建议您阅读这篇很好的文章,发现Bigquery流插入生命周期,利用tabledata . insertall big query REST API方法。

实际上,正如文档所述,数据可用性和一致性是在实时分析任务中获取数据的最重要要求:

因为BigQuery的流式API是为高插入率而设计的,所以在与流式系统交互时,对底层表元数据的修改最终是一致的。在大多数情况下,元数据更改会在几分钟内传播,但在此期间,API响应可能会反映出表的不一致状态。

承认在某些情况下,元数据更改需要与流摄取内联,留档确认延迟完成此操作。即使在某些情况下旨在从表中收集元数据的缓存机制也不能保证数据更改,即在最短的时间内将流注入引用到不存在的表或整个列。由于GCP BigQuery无服务器平台的复杂性,该平台最初建立在Dremel模型之上,很难估计特定流任务的高吞吐量的延迟时间,因此GCP知识库中没有记录这一点。

同时,阅读此 Stack 线程,@Sean Chen 建议在启动流式摄取之前提供 Bigquery 元数据更改。

 类似资料:
  • 我已经冬眠来建立我的实体。对于开发人员环境,我希望Hibernate处理模式更新(主要是添加新列、删除或编辑列类型)。当添加新列时,Hibernate将添加它。从实体中移除字段不会导致列从数据库中删除。在我读到的一些帖子中,这是正常的行为。但是当我试图编辑实体字段的类型时,出现了一个问题: 这导致Hibernate添加一个类型为VARCHAR(255)的列,默认值为NULL,而NOT NULL为y

  • 上一节我们聊到 React15 架构不能支撑异步更新以至于需要重构。那么这一节我们来学习重构后的 React16 是如何支持异步更新的。 React16 架构 React16架构可以分为三层: Scheduler(调度器)—— 调度任务的优先级,高优任务优先进入Reconciler Reconciler(协调器)—— 负责找出变化的组件 Renderer(渲染器)—— 负责将变化的组件渲染到页面上

  • 是否有一种方便的方法(Python、Web UI或CLI)可以将新列插入现有BigQuery表(已经有100列左右)并相应地更新架构? 假设我想在第 49 列之后插入它。如果我通过查询执行此操作,我将不得不键入每个列名称,不是吗? 更新:建议的答案没有清楚地说明这如何适用于BigQuery。此外,文件似乎不包括 语法。测试确认 标识符不适用于 BigQuery。

  • 问题内容: update 我可以创建我的数据库架构,它会自动添加属性,约束,键等。但是,更新数据库架构又如何呢?如果我从实体中删除了某些属性,hibernate则不会删除它,或者如果我更改了某些约束,则hibernate不会触及已经创建的约束… 那么,有没有一种方法可以使hibernate状态真正更新数据库架构? 谢谢。 问题答案: 我们为自己创建了一个工具,该工具创建了必要的数据库列和表,并将其

  • 问题内容: 猫鼬架构: Upsert操作: 当我UPSERT 或默认模式值和总是更新不管文档插入或更新。使用时是相同的(当然,我不传递日期)。 我似乎没有发现任何东西可以说明这是否是预期的行为。我希望日期仅在插入时添加,而不更新,除非明确设置。 问题答案: 如果您正在寻找预期行为的“证明”,那么除了源代码本身之外,别无所求。特别是在主要定义内: 因此,您可以看到所有的中间件处理程序都已为每个“ u