我正在寻找一种方法来扫描巨大的Google BigTable,并根据事件动态组合过滤器,并在大量行上进行批量更新/删除。
目前,我正在尝试将BigTable与基于java的Dataflow相结合(用于密集的无服务器计算能力)。我达到了可以创作的程度" Scan"具有基于事件的动态过滤器的对象,但我仍然无法找到将CloudBigtableIO.read()的结果传输到后续数据流管道的方法。
感谢任何建议。
答案 0 :(得分:1)
从AbstractCloudBigtableTableDoFn扩展你的DoFn。这将使您可以访问getConnection()方法。你会做这样的事情:
try(Connection c = getConnection();
Table t = c.getTable(YOUR_TABLE_NAME);
ResultScanner resultScanner = t.getScanner(YOUR_SCAN)) {
for(Result r : resultScanner) {
Mutation m = ... // construct a Put or Delete
context.output(m)
}
}
我假设您的管道以CloudBigtableIO.read()
开头,接下来是AbstractCloudBigtableTableDoFn
,然后有CloudBigtableIO.write()
。