通过谷歌数据流变压器查询关系数据库(Querying a relational database t

2019-09-30 10:31发布

我想实现一个ParDo变压器在我的数据流管道,基本上查询要处理基于每个元件提供的数据的关系数据库。 我知道,在一个用户自定义变压器必须是可序列化,但查询的数据到数据库中的每个属性,使用jdbc我需要创建一个Connection是自然非序列化对象。

还是有可能做到的是,在数据流管道方面?

Answer 1:

对的,这是可能的。 你可以让你的Connection对象瞬态,使其没有序列号,并通过每捆一次创建startBundle方法。 一旦在包的所有元素被处理,该连接可以通过关闭finishBundle方法。

class MyDoFn extends DoFn<X, Y> {
  private transient Connection jdbc;

  @Setup
  public void setup(Context c) {
    jdbc = // Create connection
  }

  @ProcessElement
  public void processElement(ProcessContext c) {
    // query database
  }

  @Teardown
  public void tearDown(Context c) {
    // close connection
  }
}


Answer 2:

另请参阅最近添加的JDBC连接器中的Apache束(孵化) 。



文章来源: Querying a relational database through Google DataFlow Transformer