在 Google Cloud Dataflow 上的 Apache Beam 管道中保留索引映射
Persisting index map in Apache Beam pipeline on Google Cloud Dataflow
我正在设计具有以下功能的管道:
- 阅读来自不同 Pub/Sub 主题的事件,为我提供对象,我可以从中提取
StrId
(字符串)
- 使用
KV(StrId, IntId>
从 Bigtable 加载映射 table,其中 IntId
是唯一整数
- 在该映射中查找
StrId
:
- 如果找到
StrId
,则return对应IntId
- 如果没有找到
StrId
,则依次生成一个新的IntId
,添加到映射中,同时写入Bigtable
- 传递对象并
IntId
下游
我想知道状态方法是否适合我的需要,Bigtable 是否是适合使用的存储技术? StrId
和 IntId
之间的映射必须在所有 worker 中保留,以保持 IntIds
唯一。
此外,我们将不胜感激任何指向代码示例的链接。我知道这个 and this blog post.
(对于下游计算,我需要整数Id,所以没有办法)
这听起来很像 OpenTSDB 在其 tsdb-uid table 中管理字符串的方式。该过程需要结合使用增量(又名 ReadModifyWrite)来获取唯一 ID(即 int64 / long)和 CheckAndMutate 以确保您只有一个唯一映射。这是一个比你从 SQL 系统中得到的更困难的过程。
也就是说,Cloud Bigtable 不适合管理像 uid table 这样的小 table(即小于几 GB)。如果您使用 Cloud Bigtable 来存储大量数据,您也可以考虑将 Cloud Bigtable 用于 uid table。但是,我仍然建议还查看该功能的 SQL 替代方案。
我正在设计具有以下功能的管道:
- 阅读来自不同 Pub/Sub 主题的事件,为我提供对象,我可以从中提取
StrId
(字符串) - 使用
KV(StrId, IntId>
从 Bigtable 加载映射 table,其中IntId
是唯一整数 - 在该映射中查找
StrId
:- 如果找到
StrId
,则return对应IntId
- 如果没有找到
StrId
,则依次生成一个新的IntId
,添加到映射中,同时写入Bigtable
- 如果找到
- 传递对象并
IntId
下游
我想知道状态方法是否适合我的需要,Bigtable 是否是适合使用的存储技术? StrId
和 IntId
之间的映射必须在所有 worker 中保留,以保持 IntIds
唯一。
此外,我们将不胜感激任何指向代码示例的链接。我知道这个
(对于下游计算,我需要整数Id,所以没有办法)
这听起来很像 OpenTSDB 在其 tsdb-uid table 中管理字符串的方式。该过程需要结合使用增量(又名 ReadModifyWrite)来获取唯一 ID(即 int64 / long)和 CheckAndMutate 以确保您只有一个唯一映射。这是一个比你从 SQL 系统中得到的更困难的过程。
也就是说,Cloud Bigtable 不适合管理像 uid table 这样的小 table(即小于几 GB)。如果您使用 Cloud Bigtable 来存储大量数据,您也可以考虑将 Cloud Bigtable 用于 uid table。但是,我仍然建议还查看该功能的 SQL 替代方案。