我需要在流数据流工作的转换中访问bigtable。据我所知,有两种方法:
1)我们可以从DoFn的startBundle方法创建bigtable的连接,并从processElement方法中的bigtable访问数据。在这种方法中,每当新元素进入流时,数据流sdk就会创建与Bigtable的新连接。
2)在转换obj创建时创建bigtable连接并在processElement方法中使用它,但是dataflow sdk创建obj,序列化它并在worker节点中重新创建它,那么连接在工作节点中是否仍然有效?或者在流媒体模式下,开放bigtable连接更长时间是好的吗?
或者还有其他有效的方法来实现这一目标。
感谢。
答案 0 :(得分:1)
AbstractCloudBigtableTableDoFn以我们能想到的最佳方式维护连接,这实际上是每个VM的单例。它有private void parseJson(String jsonString) {
Log.d(TAG, "parseJson: json = " + jsonString);
images.clear();
JSONParser parser = new JSONParser(jsonString);
// Use .addAll and avoid new refernce
images.addAll(parser.parse());
mAdapter.notifyDataSetChanged();
}
方法,可让您以托管方式访问getConnection()
。
FWIW,该类位于bigtable-hbase-dataflow项目中,而不是DataflowSDK。