【问题标题】:Persisting index map in Apache Beam pipeline on Google Cloud Dataflow在 Google Cloud Dataflow 上的 Apache Beam 管道中持久化索引映射
【发布时间】:2018-11-29 06:17:09
【问题描述】:

我正在设计一个具有以下功能的管道:

  1. 从不同的 Pub/Sub 主题中读取事件,为我提供可以从中提取 StrId(字符串)的对象
  2. 使用 KV(StrId, IntId> 从 Bigtable 加载映射表,其中 IntId 是唯一整数
  3. 在该映射中查找StrId
    • 如果找到StrId,则返回对应的IntId
    • 如果没有找到StrId,依次生成一个新的IntId,添加到映射中,同时写入Bigtable
  4. 传递对象和IntId下游

我想知道状态方法是否适合我的需求,Bigtable 是否适合使用? StrIdIntId 之间的映射必须在所有工作人员中保持不变,以保持 IntIds 的唯一性。

此外,任何指向代码示例的链接都将不胜感激。我知道这个Stackoverflow Question 和这个blog post

(对于下游计算,我需要整数 Id,所以没有办法)

【问题讨论】:

    标签: google-cloud-dataflow apache-beam google-cloud-bigtable


    【解决方案1】:

    这听起来很像 OpenTSDB 在其 tsdb-uid 表中管理字符串的做法。该过程需要结合增量(又名 ReadModifyWrite)来获得唯一的 id(它是 int64 / long)和 CheckAndMutate 以确保您只有一个唯一的映射。这是一个比从 SQL 系统中获得的过程更困难的过程。

    也就是说,Cloud Bigtable 并不适合管理像 uid 表这样的小表(即小于几 GB)。如果您使用 Cloud Bigtable 存储大量数据,您也可以考虑将 Cloud Bigtable 用于 uid 表。但是,我仍然建议您也为该功能寻找 SQL 替代方案。

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      相关资源
      最近更新 更多