Sim, é possível. Você pode tornar seu objeto Connection transiente para que não seja serializado e criá-lo uma vez por pacote por meio do
startBundle
método. Uma vez que todos os elementos do bundle são processados, a conexão pode ser fechada através do finishBundle
método. 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
}
}