Giriş
Bu metodun 4 tane overload edilmiş hali var
1. jdbc metodu - SupplierEx + ToResultSetFunction + FunctionEx
İmzası şöyle
public static <T> BatchSource<T> jdbc( SupplierEx<? extends Connection> newConnectionFn, ToResultSetFunction resultSetFn, FunctionEx<? super ResultSet, ? extends T> createOutputFn ) public static <T> BatchSource<T> jdbc( DataConnectionRef dataConnectionRef, ToResultSetFunction resultSetFn, FunctionEx<? super ResultSet, ? extends T> createOutputFn ) public static <T> BatchSource<T> jdbc( String connectionURL, String query, FunctionEx<? super ResultSet, ? extends T> createOutputFn ) public static <T> BatchSource<T> jdbc( String connectionURL, String query, Properties properties, FunctionEx<? super ResultSet, ? extends T> createOutputFn )
Speeding up reading from JDBC through Spark yazısında JDBC okumasını paralel hale nasıl getirileceği anlatılıyor. Ben bu yazıyı yazarken Hazelcast böyle bir özellik sağlamıyordu
Birinci parametre JDBC Connection nesnesini döndürür
İkinci parametre JDBC ResultSet nesnesini döndürür
Üçüncü parametre JDBC ResultSet nesnesinden Java nesnesi döndürür
Örnek
Şöyle yaparız
Pipeline p = Pipeline.create(); p.readFrom(Sources.jdbc( () -> DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"), (con, parallelism, index) -> { PreparedStatement stmt = con.prepareStatement( "SELECT * FROM person WHERE MOD(id, ?) = ?)"); stmt.setInt(1, parallelism); stmt.setInt(2, index); return stmt.executeQuery(); }, resultSet -> new Person(resultSet.getInt(1), resultSet.getString(2)) )).writeTo(Sinks.logger());
Hiç yorum yok:
Yorum Gönder