从流数据流访问 Bigtable 的最佳实践是什么
What is the best practice for accessing Bigtable from streaming dataflow
我需要通过流式数据流 job.As 的一种转换来访问大表,据我所知,有两种方法:
1) 我们可以从 DoFn 的 startBundle 方法创建到 bigtable 的连接,并在 processElement 中从 bigtable 访问数据 method.In 这种方法数据流 sdk 每次新元素进入流时都会创建到 Bigtable 的新连接。
2) 在创建转换 obj 时创建 bigtable 连接并在 processElement 方法中使用它,但是数据流 sdk 创建 obj,将其序列化并在工作节点中重新创建它,那么连接在工作节点中是否仍然有效?或者在流模式下打开 bigtable 连接更长时间是否好?
或者有没有其他有效的方法来实现这个。
谢谢。
AbstractCloudBigtableTableDoFn 以我们能想到的最佳方式维护连接,这实际上是每个 VM 一个单例。它有一个 getConnection()
方法,允许您以托管方式访问 Connection
。
FWIW,class 在 bigtable-hbase-dataflow 项目中而不是 DataflowSDK。
我需要通过流式数据流 job.As 的一种转换来访问大表,据我所知,有两种方法:
1) 我们可以从 DoFn 的 startBundle 方法创建到 bigtable 的连接,并在 processElement 中从 bigtable 访问数据 method.In 这种方法数据流 sdk 每次新元素进入流时都会创建到 Bigtable 的新连接。
2) 在创建转换 obj 时创建 bigtable 连接并在 processElement 方法中使用它,但是数据流 sdk 创建 obj,将其序列化并在工作节点中重新创建它,那么连接在工作节点中是否仍然有效?或者在流模式下打开 bigtable 连接更长时间是否好?
或者有没有其他有效的方法来实现这个。
谢谢。
AbstractCloudBigtableTableDoFn 以我们能想到的最佳方式维护连接,这实际上是每个 VM 一个单例。它有一个 getConnection()
方法,允许您以托管方式访问 Connection
。
FWIW,class 在 bigtable-hbase-dataflow 项目中而不是 DataflowSDK。