从流数据流访问Bigtable的最佳做法是什么?

时间:2016-12-26 09:18:06

标签: google-cloud-dataflow google-cloud-bigtable

我需要在流数据流工作的转换中访问bigtable。据我所知,有两种方法:

1)我们可以从DoFn的startBundle方法创建bigtable的连接,并从processElement方法中的bigtable访问数据。在这种方法中,每当新元素进入流时,数据流sdk就会创建与Bigtable的新连接。

2)在转换obj创建时创建bigtable连接并在processElement方法中使用它,但是dataflow sdk创建obj,序列化它并在worker节点中重新创建它,那么连接在工作节点中是否仍然有效?或者在流媒体模式下,开放bigtable连接更长时间是好的吗?

或者还有其他有效的方法来实现这一目标。

感谢。

1 个答案:

答案 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。