【问题标题】:Join batch data with data stored in BigTable将批处理数据与存储在 BigTable 中的数据连接起来
【发布时间】:2019-08-15 16:55:06
【问题描述】:

我在 GCS 中有不断增长的数据,并且会有一个批处理作业运行,比如说每天处理 100 万篇文章增量。我需要从 BigTable(包含数十亿条记录)中获取键的附加信息。对地图操作中的每个项目进行查找是否可行?批处理这些查找并执行诸如批量读取之类的操作是否有意义?或者对于这个用例使用 scio/beam 的最佳方式是什么?

我在Pattern: Streaming mode large lookup tables 中发现,推荐对每个请求执行查找以进行流式传输,但我不确定我是否不会通过批处理作业重载 BigTable。

你们对如何处理这个用例有任何总体或具体的建议吗?

【问题讨论】:

    标签: join google-cloud-dataflow apache-beam google-cloud-bigtable spotify-scio


    【解决方案1】:

    我以前帮助过其他人,但在基础数据库/Beam 中。您需要批量聚合密钥以获得最佳性能。每批 25 到 100 个键之间的某个地方是有意义的。如果您可以对列表进行预排序,以便您的查找更有可能在每个请求中找到更少的 Cloud Bigtable 节点。

    您可以直接使用 Cloud Bigtable 客户端,只需确保使用“使用批量”设置,或者使用单例来缓存客户端。

    这肯定会对您的 Cloud Bigtable 集群产生影响,但我无法告诉您影响程度。您可能需要增加集群的大小,以免 Cloud Bigtable 的其他用途受到影响。

    【讨论】:

    • 非常感谢@SolomonDuskis。我想布隆过滤器也可能有助于减少某些查找,但我找不到如何将它添加到 BigTable(与 HBase 相反)。是否有可能,或者它已经以某种方式在 OOTB 中起作用?
    • 目前没有配置布隆过滤器的方法。在您可以在这里找到的“google-cloud-bigtable-discuss”组中询问可能是值得的:cloud.google.com/bigtable/docs/support/getting-support
    • 是的,我已经在那里找到了类似的问题groups.google.com/forum/#!activity/…
    【解决方案2】:

    我们在 Scio 有一个助手 BigtableDoFn。它不会批处理,但至少抽象出 DoFn 中的异步请求处理,因此 processElement/map 函数不会被网络往返阻塞。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2017-10-29
      • 2022-12-12
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 2020-01-24
      相关资源
      最近更新 更多