更新:似乎最近发布的org.apache.beam.sdk.io.hbase-2.6.0
包含HBaseIO.readAll()
API。我在google dataflow中进行了测试,它似乎正在工作。在Google Cloud Dataflow设置中直接使用HBaseIO
会不会有任何问题或陷阱?
BigtableIO.read
以PBegin
作为输入,我想知道是否有像SpannerIO
的{{1}} API这样的东西,其中readAll
是读取的API输入可能是BigtableIO
中的PCollection
(例如,扫描),并从这些ReadOperations
中产生了PCollection<Result>
。
我有一个用例,其中我需要进行多个前缀扫描,每个扫描具有不同的前缀,并且具有相同前缀的行数可以小(几百个)或大(几十万个)。如果没有类似ReadOperation
的东西。我正在考虑让ReadAll
进行“限制”扫描,如果限制扫描未达到键范围的末尾,我会将其分成较小的块。就我而言,密钥空间是均匀分布的,因此可以通过最后扫描的行很好地估计剩余行的数量(假设从扫描返回的所有小于最后扫描的密钥的密钥)。
道歉,如果以前曾问过类似的问题。
答案 0 :(得分:1)
由于区域定位器逻辑,HBaseIO与Bigtable HBase连接器不兼容。而且我们还没有为Bigtable实现SplittableDoFn api。
您的行有多大,它们足够小以至于可以由一个工人处理数十万行的扫描?
如果是,那么我将假设您尝试并行化的昂贵工作在您的管道中进一步进行。在这种情况下,您可以:
如果行很大,并且您需要将每个前缀扫描划分给多个工作程序,则您将不得不增强上述方法:
a
,并且SampleRowKeys包含'ac','ap','aw',则它应发出的范围为[a-ac),[ac-ap),[ap-aw) ,[aw-b)。分配一个分片ID并按其分组。