我在GCS中有越来越多的数据,并且将有一个批处理作业,比如说每天处理100万篇文章的增量。我需要从BigTable获得更多的密钥信息(包含数十亿条记录)。只对地图操作中的每一项进行查找是否可行?对这些查找进行批量处理并执行类似于批量读取之类的操作是否有意义?或者使用scio/beam来使用这个用例的最佳方法是什么?
我在模式:流模式大查找表中发现,对每个请求执行查找是推荐的流方法,但我不确定是否会通过批处理作业重载BigTable。
你们对如何处理这个用例有什么全面或具体的建议吗?
发布于 2019-03-25 16:11:52
我以前曾帮助过其他人,但在基本数据库/ Beam中。为了获得最佳的性能,您需要将键按批聚合。每批25到100把钥匙是有道理的。如果您可以对列表进行预排序,以便您的查找更有可能在每个请求中访问较少的节点。
您可以直接使用Cloud客户机,只需确保使用"use“设置,或者有一个单例来缓存客户机。
这肯定会对Cloud集群产生影响,但我无法告诉您有多少。您可能需要增加集群的大小,这样云Bigtable的其他用途就不会受到影响。
发布于 2019-04-09 14:40:04
我们在Scio有一个助手BigtableDoFn。它不会对DoFn中的异步请求处理进行批处理,但至少会将其抽象掉,这样processElement/map函数就不会被网络往返所阻塞。
https://stackoverflow.com/questions/55337980
复制相似问题