Ja, es ist möglich. Sie könnten Ihr Connection-Objekt transient machen, sodass es nicht serialisiert wird, und es einmal pro Bundle über startBundle
erstellen Methode. Sobald alle Elemente im Bündel verarbeitet sind, kann die Verbindung durch finishBundle
geschlossen werden Methode.
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
}
}