Oui c'est possible. Vous pouvez rendre votre objet Connection transitoire afin qu'il ne soit pas sérialisé et le créer une fois par bundle via le startBundle
méthode. Une fois que tous les éléments du bundle sont traités, la connexion peut être fermée via le finishBundle
méthode.
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
}
}