我想实现一个ParDo
变压器在我的数据流管道,基本上查询要处理基于每个元件提供的数据的关系数据库。 我知道,在一个用户自定义变压器必须是可序列化,但查询的数据到数据库中的每个属性,使用jdbc
我需要创建一个Connection
是自然非序列化对象。
还是有可能做到的是,在数据流管道方面?
我想实现一个ParDo
变压器在我的数据流管道,基本上查询要处理基于每个元件提供的数据的关系数据库。 我知道,在一个用户自定义变压器必须是可序列化,但查询的数据到数据库中的每个属性,使用jdbc
我需要创建一个Connection
是自然非序列化对象。
还是有可能做到的是,在数据流管道方面?
对的,这是可能的。 你可以让你的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
}
}
另请参阅最近添加的JDBC连接器中的Apache束(孵化) 。