Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu sayfa, Simba JDBC Sürücüsü (Eski), sürüm 3'ün altındaki sürümler için geçerlidir. Databricks, JDBC bağlantısı için Databricks JDBC Sürücüsüne geçiş yapmanızı kesinlikle önerir. Unity Kataloğu ölçüm görünümleri desteği, birden çok SQL deyimine yayılan işlemler, saklı yordamlar, daha hızlı büyük sonuç alma ve yerleşik istemci telemetrisi gibi iyileştirmeler içerir.
Bu sayfada Databricks JDBC Sürücüsünü kullanan kodun nasıl test edilir açıklanmaktadır.
JDBC uyumlu diller için herhangi bir test çerçevesi kullanın. Aşağıdaki örneklerde JDBC sürücü bağlantılarını test etmek için JUnit ve Mockito kullanılır. Bu kod, Databricks JDBC Sürücüsü (Simba) için kimlik doğrulama ayarlarındaki örneği temel alır.
Yardımcı işlevler
Dosya, Helpers.java JDBC bağlantılarıyla çalışmaya yönelik yardımcı program işlevlerini içerir:
-
CreateConnection: Azure Databricks işlem kaynağına bir bağlantı açar. -
SelectNYCTaxis: içindensamples.nyctaxi.tripsbelirtilen satır sayısını sorgular. -
PrintResultSet: Sonuç kümesinin içeriğini konsola yazdırır.
// Helpers.java
import java.sql.*;
import java.util.Properties;
public class Helpers {
static Connection CreateConnection(
String url,
Properties p
) throws SQLException {
Connection conn = DriverManager.getConnection(url, p);
return conn;
}
static ResultSet SelectNYCTaxis(
Connection conn,
long rows
) throws SQLException {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM samples.nyctaxi.trips LIMIT " + rows);
return rs;
}
static void PrintResultSet(ResultSet rs) throws SQLException {
ResultSetMetaData md = rs.getMetaData();
String[] columns = new String[md.getColumnCount()];
for (int i = 0; i < columns.length; i++) {
columns[i] = md.getColumnName(i + 1);
}
while (rs.next()) {
System.out.print("Row " + rs.getRow() + "=[");
for (int i = 0; i < columns.length; i++) {
if (i != 0) {
System.out.print(", ");
}
System.out.print(columns[i] + "='" + rs.getObject(i + 1) + "'");
}
System.out.println(")]");
}
}
}
Main sınıfı
Dosya, Main.java bağlanmak ve verileri sorgulamak için yardımcı işlevleri çağırır:
package org.example;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class Main {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.databricks.client.jdbc.Driver");
String url = "jdbc:databricks://" + System.getenv("DATABRICKS_SERVER_HOSTNAME") + ":443";
Properties p = new Properties();
p.put("httpPath", System.getenv("DATABRICKS_HTTP_PATH"));
p.put("AuthMech", "3");
p.put("UID", "token");
p.put("PWD", System.getenv("DATABRICKS_TOKEN"));
Connection conn = Helpers.CreateConnection(url, p);
ResultSet rs = Helpers.SelectNYCTaxis(conn, 2);
Helpers.PrintResultSet(rs);
}
}
Birim testleri taklit (mocking) ile
JUnit ve Mockito, HelpersTest.java işlevini test etmek için SelectNYCTaxis dosyasında kullanılır. Mocking, gerçek hesaplama kaynaklarını kullanmadan veritabanı bağlantılarını simüle eder, böylece testler Azure Databricks çalışma alanlarınızı etkilemeden saniyeler içinde çalışır.
package org.example;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class HelpersTest {
@Test
public void testSelectNYCTaxis() throws SQLException {
Connection mockConnection = Mockito.mock(Connection.class);
Statement mockStatement = Mockito.mock(Statement.class);
ResultSet mockResultSet = Mockito.mock(ResultSet.class);
Mockito.when(mockConnection.createStatement()).thenReturn(mockStatement);
Mockito.when(mockStatement.executeQuery(Mockito.anyString())).thenReturn(mockResultSet);
ResultSet rs = Helpers.SelectNYCTaxis(mockConnection, 2);
assertEquals(mockResultSet, rs);
}
}
Yalnızca bir SelectNYCTaxis deyimi çalıştırdığı için SELECT, burada mocking kesinlikle gerekli değildir. Ancak, tablo durumunu etkilemeden testleri tekrar tekrar çalıştırabileceğinizden, sahte işlem özellikle verileri (INSERT INTO, UPDATE, DELETE FROM) değiştiren işlevleri test ederken yararlıdır.