Có nó là có thể. Bạn có thể làm cho đối tượng Kết nối của mình tạm thời để nó không được tuần tự hóa và tạo nó một lần cho mỗi gói thông qua startBundle
phương pháp. Khi tất cả các phần tử trong gói được xử lý, kết nối có thể được đóng lại thông qua finishBundle
phương pháp.
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
}
}