Join 将批处理数据与存储在BigTable中的数据联接

Join 将批处理数据与存储在BigTable中的数据联接,join,google-cloud-dataflow,apache-beam,google-cloud-bigtable,spotify-scio,Join,Google Cloud Dataflow,Apache Beam,Google Cloud Bigtable,Spotify Scio,我在GCS中有不断增长的数据,并将有一个批处理作业,每天运行,以处理100万篇文章。我需要从BigTable(包含数十亿条记录)中获取键的附加信息。对映射操作中的每个项目进行查找是否可行?批量查找并执行诸如批量读取之类的操作有意义吗?或者,使用scio/beam的这个用例的最佳方式是什么 我发现对每个请求执行查找是流式处理的推荐方法,但我不确定批处理作业是否会使BigTable过载 你们对如何处理这个用例有什么总体的或具体的建议吗?我以前帮助过其他人这样做,但都是在基本数据库/Beam中。您需要

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

我发现对每个请求执行查找是流式处理的推荐方法,但我不确定批处理作业是否会使BigTable过载


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

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

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


这肯定会对您的Cloud Bigtable集群产生影响,但我无法告诉您影响有多大。您可能需要增加集群的大小,以便云Bigtable的其他使用不会受到影响。

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

非常感谢@SolomonDuskis。我想bloom过滤器也可能有助于减少某些查找,但我找不到如何将其添加到BigTable(与HBase相反)。这是可能的,还是它已经在OOTB中工作了?目前还没有一种配置bloom过滤器的方法。在“谷歌云bigtable讨论”小组中,你可以在这里找到这样的问题:是的,我已经在那里找到了类似的问题