Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
JDBC (Java Database Connectivity) on laajasti hyväksytty standardi, joka mahdollistaa asiakassovellusten yhteyden tietokantojen ja big data -alustojen datan kanssa työskentelyyn.
Microsoft JDBC Driver for Fabric Data Engineering antaa sinun yhdistää, kysyä ja hallita Spark-työkuormia Fabric-järjestelmässä JDBC-standardin luotettavuudella ja yksinkertaisuudella. Fabric:n Livy-rajapintojen pohjalta rakennettu ajuri tarjoaa turvallisen ja joustavan Spark SQL -yhteyden Java-sovelluksiin ja BI-työkaluihin. Tämä integraatio mahdollistaa Spark-koodin lähettämisen ja suorittamisen suoraan ilman, että tarvitsee luoda erillisiä muistikirja- tai Spark-työn määrittelykohteita. Ajuri on yhteensopiva suosittujen JDBC-asiakkaiden, kuten DbVisualizerin ja DBeaverin, sekä JDBC-yhteyksiä tukevien BI-työkalujen, kuten Tableau:n, kanssa.
Tärkeimmät ominaisuudet
- JDBC 4.2 -yhteensopivuus: JDBC 4.2 -määrittelyn täysi toteutus
- Microsoft Entra ID -tunnistautuminen: Useita todennusprosesseja, mukaan lukien interaktiiviset, asiakastunnukset ja varmennepohjainen tunnistautuminen
- HikariCP-integraatio: Käytä HikariCP:tä JDBC-yhteyksien hallintaan ja uudelleenkäyttöön tuotantosovelluksissa
- Spark SQL Native Query Support: Spark SQL -lauseiden suora suoritus ilman käännöstä
- Kattava tietotyyppituki: Tuki kaikille Spark SQL -tietotyypeille, mukaan lukien monimutkaiset tyypit (TAULUKKO, KARTTA, RAKENNE)
- Asynkronisen tulosjoukon esihaku: taustalla lataava datan lataus suorituskyvyn parantamiseksi
- Katkaisijan kuvio: Suojaus ketjureaktioilta automaattisella uudelleenkokeilulla
- Automaattinen uudelleenyhdistäminen: Läpinäkyvä istunnon palautus yhteyden epäonnistumisista
- Edistynyt uudelleenyrittämislogiikka: Kokeile uudelleen eksponentiaalisella peruutuksella ja istunnon palautuksella parantaen resilienssiä
- Välityspalvelintuki: HTTP- ja SOCKS-välityspalvelinkonfiguraatio yritysympäristöihin
Ennakkovaatimukset
Ennen kuin käytät Microsoft JDBC Driver for Fabric Data Engineeringiä, varmista, että sinulla on:
- Java Development Kit (JDK): Versio 11 tai uudempi (Java 21 suositeltava)
- Fabric Access: Pääsy Fabric-työtilaan
- Microsoft Entra ID tunnistetiedot: Sopivat tunnistetiedot todennukseen
- Workspace- ja Lakehouse-tunnisteet: GUID-tunnisteet Fabric-työtilallesi ja järvenrakennukselle
Lataus ja asennus
Microsoft JDBC Driver for Fabric Data Engineering -versio 1.0.0 tukee Java 11, 17 ja 21. Parannamme jatkuvasti Java-yhteystukea ja suosittelemme, että käytät Microsoftin JDBC-ajurin uusinta versiota.
- Lataa Microsoft JDBC Driver for Fabric Data Engineering (zip)
- Lataa Microsoft JDBC Driver for Fabric Data Engineering (tar)
- Lataa joko zip- tai tar-tiedosto yllä olevista linkeistä.
- Purkaa ladattu tiedosto päästäksesi ajurien JAR-tiedostoihin.
- Valitse JAR-tiedosto, joka vastaa JRE-versiotasi:
- Java 11:lle:
ms-sparksql-jdbc-1.0.1.jre11.jar - Java 17:lle:
ms-sparksql-jdbc-1.0.1.jre17.jar - Java 21:lle:
ms-sparksql-jdbc-1.0.1.jre21.jar
- Java 11:lle:
- Lisää valittu JAR-tiedosto hakemuksesi luokkapolkuun.
- JDBC-asiakkaille määritä JDBC-ajuriluokka:
com.microsoft.spark.livy.jdbc.LivyDriver
Nopea aloitusesimerkki
Tämä esimerkki osoittaa, miten yhdistetään Fabric:iin ja suoritetaan kysely Microsoft JDBC Driver for Fabric Data Engineering -ajurilla. Ennen tämän koodin suorittamista varmista, että olet suorittanut vaaditut vaatimukset ja asentanut ajurin.
import java.sql.*;
public class QuickStartExample {
public static void main(String[] args) {
// Connection string with required parameters
String url = "jdbc:fabricspark://api.fabric.microsoft.com;" +
"FabricWorkspaceID=<workspace-id>;" +
"FabricLakehouseID=<lakehouse-id>;" +
"AuthFlow=2;" + // Azure CLI based authentication
"LogLevel=INFO";
try (Connection conn = DriverManager.getConnection(url)) {
// Execute a simple query
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 'Hello from Fabric!' as message")) {
if (rs.next()) {
System.out.println(rs.getString("message"));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Yhteysmerkkijonon muoto
Perusyhteysmerkkijono
Microsoft JDBC Driver for Fabric Data Engineering käyttää seuraavaa yhteysmerkkijono -muotoa:
jdbc:fabricspark://<hostname>[:<port>][;<parameter1>=<value1>;<parameter2>=<value2>;...]
Yhteysmerkkijonon komponentit
| Komponentti | Kuvaus | Esimerkki |
|---|---|---|
| Protokolla | JDBC-URL-protokollan tunniste | jdbc:fabricspark:// |
| Isäntänimi | Fabric-päätepisteen isäntänimi | api.fabric.microsoft.com |
| Satama | Valinnainen porttinumero (oletus: 443) | :443 |
| Parametrit | Puolipisteellä eroteltu avain=arvoparit | FabricWorkspaceID=<guid> |
Esimerkkiyhteysmerkkijonoja
Perusyhteys (interaktiivinen selainpohjainen todennus)
jdbc:fabricspark://api.fabric.microsoft.com;FabricWorkspaceID=<workspace-id>;FabricLakehouseID=<lakehouse-id>;AuthFlow=1
Kipinäresurssikonfiguraatiolla
jdbc:fabricspark://api.fabric.microsoft.com;FabricWorkspaceID=<workspace-id>;FabricLakehouseID=<lakehouse-id>;DriverCores=4;DriverMemory=4g;ExecutorCores=4;ExecutorMemory=8g;NumExecutors=2;AuthFlow=2
Spark Session Propertiesin kanssa
jdbc:fabricspark://api.fabric.microsoft.com;FabricWorkspaceID=<workspace-id>;FabricLakehouseID=<lakehouse-id>;spark.sql.adaptive.enabled=true;spark.sql.shuffle.partitions=200;AuthFlow=2
Todennus
Microsoft JDBC Driver for Fabric Data Engineering tukee useita todennusmenetelmiä Microsoft Entra ID:n (entinen Azure Active Directory) kautta. Tunnistautuminen konfiguroidaan yhteysmerkkijonon AuthFlow parametrin avulla.
Tunnistautumisvirrat
| AuthFlow | Todentamismenetelmä | Käyttötapaus |
|---|---|---|
| 1 | Interaktiivinen selain | Interaktiivinen käyttäjän tunnistautuminen OAuth 2.0:n avulla |
| 2 | Azure CLI | Kehitys Azure CLI:n avulla |
| 3 | Asiakkaan salaiset tunnukset (palvelupäähenkilö) | Automatisoitu/palvelu-todennus |
| 4 | Asiakasvarmenteen pätevyys | Varmennepohjainen palvelupäähenkilön tunnistautuminen |
| 5 | Pääsytunnus | Ennakkoon hankittu haltijan pääsytunnus |
Interaktiivinen selaimen tunnistautuminen
Paras: Kehitykseen ja interaktiivisiin sovelluksiin
String url = "jdbc:fabricspark://api.fabric.microsoft.com;" +
"FabricWorkspaceID=<workspace-id>;" +
"FabricLakehouseID=<lakehouse-id>;" +
"AuthFlow=1;" +
"AuthTenantID=<tenant-id>;" + // Optional
"LogLevel=INFO";
Connection conn = DriverManager.getConnection(url);
Parametrit:
-
AuthFlow=1: Määrittelee interaktiivisen selaimen tunnistautumisen -
AuthTenantID(valinnainen): Microsoft Entra vuokralaisen tunnus -
AuthClientID(valinnainen): Sovelluksen (asiakas) tunnus
Käyttäytyminen:
- Avaa selaimen ikkunan käyttäjän tunnistautumista varten
- Tunnistetiedot välimuistitetaan myöhemmille yhteyksille, kunnes ne ovat vanhentuneet
- Sopii yksinkäyttäjäsovelluksiin
Asiakastunnukset tai palvelupäähenkilön todennus
Paras: Automatisoidut palvelut ja taustatyöt
String url = "jdbc:fabricspark://api.fabric.microsoft.com;" +
"FabricWorkspaceID=<workspace-id>;" +
"FabricLakehouseID=<lakehouse-id>;" +
"AuthFlow=3;" +
"AuthClientID=<client-id>;" +
"AuthClientSecret=<client-secret>;" +
"AuthTenantID=<tenant-id>;" +
"LogLevel=INFO";
Connection conn = DriverManager.getConnection(url);
Vaaditut parametrit:
-
AuthFlow=3: Määrittelee asiakkaan tunnistetunnisteiden todennuksen -
AuthClientID: Application (client) ID Microsoft Entra ID:stä -
AuthClientSecret: Asiakassalaisuus Microsoft Entra ID:stä -
AuthTenantID: Microsoft Entra vuokralaisen tunnus
Parhaat käytännöt:
- Tallenna salaisuudet turvallisesti (Azure Key Vault, ympäristömuuttujat)
- Käytä hallittuja identiteettejä aina kun mahdollista
- Kierrätä salaisuuksia säännöllisesti
Certificate-Based Todennus
Paras: Yrityssovelluksiin, jotka vaativat varmennepohjaista todennusta
String url = "jdbc:fabricspark://api.fabric.microsoft.com;" +
"FabricWorkspaceID=<workspace-id>;" +
"FabricLakehouseID=<lakehouse-id>;" +
"AuthFlow=4;" +
"AuthClientID=<client-id>;" +
"AuthCertificatePath=/path/to/certificate.pfx;" +
"AuthCertificatePassword=<certificate-password>;" +
"AuthTenantID=<tenant-id>;" +
"LogLevel=INFO";
Connection conn = DriverManager.getConnection(url);
Vaaditut parametrit:
-
AuthFlow=4: Määrittelee varmennepohjaisen tunnistautumisen -
AuthClientID: Sovelluksen (asiakas) tunnus -
AuthCertificatePath: Polku PFX/PKCS12-varmennetiedostoon -
AuthCertificatePassword: Varmenteen salasana -
AuthTenantID: Microsoft Entra vuokralaisen tunnus
Pääsytunnusen tunnistautuminen
Parhaiten: Mukautetut todennusskenaariot
// Acquire token through custom mechanism
String accessToken = acquireTokenFromCustomSource();
String url = "jdbc:fabricspark://api.fabric.microsoft.com;" +
"FabricWorkspaceID=<workspace-id>;" +
"FabricLakehouseID=<lakehouse-id>;" +
"AuthFlow=5;" + // Access token authentication
"AuthAccessToken=" + accessToken + ";" +
"LogLevel=INFO";
Connection conn = DriverManager.getConnection(url);
Todennusvälimuisti
Ajuri välimuistittaa automaattisesti todennustokenit suorituskyvyn parantamiseksi:
// Enable/disable caching (enabled by default)
String url = "jdbc:fabricspark://api.fabric.microsoft.com;" +
"FabricWorkspaceID=<workspace-id>;" +
"FabricLakehouseID=<lakehouse-id>;" +
"AuthFlow=2;" +
"AuthEnableCaching=true;" + // Enable token caching
"AuthCacheTTLMS=3600000"; // Cache TTL: 1 hour
Connection conn = DriverManager.getConnection(url);
Määritysparametrit
Pakolliset parametrit
Nämä parametrit täytyy olla läsnä jokaisessa yhteysjonossa:
| Parametri | Kirjoita | Kuvaus | Esimerkki |
|---|---|---|---|
FabricWorkspaceID |
UUID | Fabric-työtilan tunnus | <workspace-id> |
FabricLakehouseID |
UUID | Fabric-järvimajan tunniste | <lakehouse-id> |
AuthFlow |
Integer | Todennusprosessityyppi (1-5) | 2 |
Valinnaiset parametrit
API-version konfiguraatio
| Parametri | Kirjoita | Oletus | Kuvaus |
|---|---|---|---|
FabricVersion |
Merkkijono | v1 |
Fabric API -versio |
LivyApiVersion |
Merkkijono | 2023-12-01 |
Livy API -versio |
Ympäristön määritys
| Parametri | Kirjoita | Oletus | Kuvaus |
|---|---|---|---|
FabricEnvironmentID |
UUID | Ei ole | Fabric-ympäristön tunniste ympäristöelementin viittaamiseen Spark-istunnossa |
Kipinän konfiguraatio
Istuntoresurssien konfigurointi
Määritä Spark-istuntoresurssit optimaalisen suorituskyvyn saavuttamiseksi:
| Parametri | Kirjoita | Oletus | Kuvaus | Esimerkki |
|---|---|---|---|---|
DriverCores |
Integer | Sparkin oletus | Ajurin CPU-ytimien määrä | 4 |
DriverMemory |
Merkkijono | Sparkin oletus | Muistin varaus ajurille | 4g |
ExecutorCores |
Integer | Sparkin oletus | Suorittimen ytimien määrä per suorittaja | 4 |
ExecutorMemory |
Merkkijono | Sparkin oletus | Muistin varaus per toimeenpanija | 8g |
NumExecutors |
Integer | Sparkin oletus | Toimeenpanijoiden määrä | 2 |
Esimerkki:
DriverCores=4;DriverMemory=4g;ExecutorCores=4;ExecutorMemory=8g;NumExecutors=2
Mukautetut Spark-istunto-ominaisuudet
Mikä tahansa etuliitteen mukainen parametri spark. sovelletaan automaattisesti Spark-istuntoon:
Esimerkkejä kipinäkonfiguraatioista:
spark.sql.adaptive.enabled=true
spark.sql.adaptive.coalescePartitions.enabled=true
spark.sql.shuffle.partitions=200
spark.sql.autoBroadcastJoinThreshold=10485760
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.minExecutors=1
spark.dynamicAllocation.maxExecutors=10
spark.executor.memoryOverhead=1g
Natiivisuoritusmoottori (NEE):
spark.nee.enabled=true
Täydellinen esimerkki:
jdbc:fabricspark://api.fabric.microsoft.com;FabricWorkspaceID=<guid>;FabricLakehouseID=<guid>;DriverMemory=4g;ExecutorMemory=8g;NumExecutors=2;spark.sql.adaptive.enabled=true;spark.nee.enabled=true;AuthFlow=2
HTTP-asiakasyhteysasetukset
Määritä ajurin HTTP-siirtoyhteydet optimaalisen verkon suorituskyvyn saavuttamiseksi. Nämä asetukset eivät konfiguroi tai hallinnoi JDBC-yhteyspoolia:
| Parametri | Kirjoita | Oletus | Kuvaus |
|---|---|---|---|
HttpMaxTotalConnections |
Integer | 100 | Maksimimäärä kokonais-HTTP-yhteyksiä |
HttpMaxConnectionsPerRoute |
Integer | 50 | Maksimiyhteydet per reitti |
HttpConnectionTimeoutInSeconds |
Integer | 30 | Yhteyden aikakatkaisu |
HttpSocketTimeoutInSeconds |
Integer | 60 | Pistorasian lukemisen aikakatkaisu |
HttpReadTimeoutInSeconds |
Integer | 60 | HTTP-lukuaikakatkaisu |
HttpConnectionRequestTimeoutSeconds |
Integer | 30 | Yhteyspyynnön aikakatkaisu poolista |
HttpEnableKeepAlive |
totuusarvo | tosi | Ota HTTP keep-alive käyttöön |
HttpKeepAliveTimeoutSeconds |
Integer | 60 | Pidä elossa -aikalisä |
HttpFollowRedirects |
totuusarvo | tosi | Seuraa HTTP-uudelleenohjauksia |
HttpUseAsyncIO |
totuusarvo | väärä | Käytä asynkronista HTTP I/O:ta |
Esimerkki:
HttpMaxTotalConnections=200;HttpMaxConnectionsPerRoute=100;HttpConnectionTimeoutInSeconds=60
Välityspalvelimen konfiguraatio
Määritä HTTP- ja SOCKS-välityspalvelinasetukset yritysympäristöihin:
| Parametri | Kirjoita | Oletus | Kuvaus |
|---|---|---|---|
UseProxy |
totuusarvo | väärä | Ota välityspalvelin käyttöön |
ProxyTransport |
Merkkijono | http |
Välityspalvelimen siirtotyyppi (http/tcp) |
ProxyHost |
Merkkijono | Ei ole | Välityspalvelimen isäntänimi |
ProxyPort |
Integer | Ei ole | Proxy-portti |
ProxyAuthEnabled |
totuusarvo | väärä | Ota välityspalvelin autentikointi käyttöön |
ProxyUsername |
Merkkijono | Ei ole | Välityspalvelimen todennuskäyttäjätunnus |
ProxyPassword |
Merkkijono | Ei ole | Välityspalvelimen todennussalasana |
ProxyAuthScheme |
Merkkijono | basic |
Auth-järjestelmä (perus/digest/ntlm) |
ProxySocksVersion |
Integer | 5 | SOCKS-versio (4/5) |
HTTP-välityspalvelinesimerkki:
UseProxy=true;ProxyTransport=http;ProxyHost=proxy.company.com;ProxyPort=8080;ProxyAuthEnabled=true;ProxyUsername=user;ProxyPassword=pass
SOCKS-proxy-esimerkki:
UseProxy=true;ProxyTransport=tcp;ProxyHost=socks.company.com;ProxyPort=1080;ProxySocksVersion=5
Kirjaamisen kokoonpano
| Parametri | Kirjoita | Oletus | Kuvaus |
|---|---|---|---|
LogLevel |
Merkkijono | INFO |
Lokitaso: JÄLJITYS, VIRHEENKORJAUS, TIETO, VAROITUS, VIRHE |
Esimerkki:
LogLevel=DEBUG
Oletuslokin sijainti:
${user.home}/.microsoft/livy-jdbc-driver/driver.log
Mukautettu lokin konfiguraatio: Käytä mukautettua log4j2.xml tiedostoa logback.xml luokkapolullasi.
Käyttöesimerkkejä
Perusyhteys
import java.sql.*;
public class BasicConnectionExample {
public static void main(String[] args) {
String url = "jdbc:fabricspark://api.fabric.microsoft.com;" +
"FabricWorkspaceID=<workspace-id>;" +
"FabricLakehouseID=<lakehouse-id>;" +
"AuthFlow=2";
try (Connection conn = DriverManager.getConnection(url)) {
System.out.println("Connected successfully!");
System.out.println("Database: " + conn.getMetaData().getDatabaseProductName());
System.out.println("Driver: " + conn.getMetaData().getDriverName());
System.out.println("Driver Version: " + conn.getMetaData().getDriverVersion());
} catch (SQLException e) {
System.err.println("Connection failed: " + e.getMessage());
e.printStackTrace();
}
}
}
Kyselyjen suorittaminen
Yksinkertainen kysely
public void executeSimpleQuery(Connection conn) throws SQLException {
String sql = "SELECT current_timestamp() as now";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
if (rs.next()) {
Timestamp now = rs.getTimestamp("now");
System.out.println("Current timestamp: " + now);
}
}
}
Kysely suodattimella
public void executeQueryWithFilter(Connection conn) throws SQLException {
String sql = "SELECT * FROM sales WHERE amount > 1000 ORDER BY amount DESC";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
int id = rs.getInt("id");
double amount = rs.getDouble("amount");
Date date = rs.getDate("sale_date");
System.out.printf("ID: %d, Amount: %.2f, Date: %s%n",
id, amount, date);
}
}
}
Kysely rajan kanssa
public void executeQueryWithLimit(Connection conn) throws SQLException {
String sql = "SELECT * FROM customers LIMIT 10";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
// Print column names
for (int i = 1; i <= columnCount; i++) {
System.out.print(metaData.getColumnName(i) + "\t");
}
System.out.println();
// Print rows
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
System.out.print(rs.getString(i) + "\t");
}
System.out.println();
}
}
}
Työskentely tulosjoukkojen kanssa
Tulosjoukkojen navigointi
public void navigateResultSet(Connection conn) throws SQLException {
String sql = "SELECT id, name, amount FROM orders";
try (Statement stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(sql)) {
// Move to first row
if (rs.first()) {
System.out.println("First row: " + rs.getString("name"));
}
// Move to last row
if (rs.last()) {
System.out.println("Last row: " + rs.getString("name"));
System.out.println("Total rows: " + rs.getRow());
}
// Move to specific row
if (rs.absolute(5)) {
System.out.println("Row 5: " + rs.getString("name"));
}
}
}
Suurten tulosjoukkojen käsittely
public void processLargeResultSet(Connection conn) throws SQLException {
String sql = "SELECT * FROM large_table";
try (Statement stmt = conn.createStatement()) {
// Set fetch size for efficient memory usage
stmt.setFetchSize(1000);
try (ResultSet rs = stmt.executeQuery(sql)) {
int rowCount = 0;
while (rs.next()) {
// Process row
processRow(rs);
rowCount++;
if (rowCount % 10000 == 0) {
System.out.println("Processed " + rowCount + " rows");
}
}
System.out.println("Total rows processed: " + rowCount);
}
}
}
private void processRow(ResultSet rs) throws SQLException {
// Process individual row
}
Valmisteltujen lausumien käyttö
public void usePreparedStatement(Connection conn) throws SQLException {
String sql = "SELECT * FROM products WHERE category = ? AND price > ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
// Set parameters
pstmt.setString(1, "Electronics");
pstmt.setDouble(2, 100.0);
try (ResultSet rs = pstmt.executeQuery()) {
while (rs.next()) {
String name = rs.getString("name");
double price = rs.getDouble("price");
System.out.printf("Product: %s, Price: $%.2f%n", name, price);
}
}
}
}
Erätoiminta
public void executeBatchInsert(Connection conn) throws SQLException {
String sql = "INSERT INTO logs (timestamp, level, message) VALUES (?, ?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
conn.setAutoCommit(false); // Disable auto-commit for batch
// Add multiple statements to batch
for (int i = 0; i < 1000; i++) {
pstmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
pstmt.setString(2, "INFO");
pstmt.setString(3, "Log message " + i);
pstmt.addBatch();
// Execute batch every 100 statements
if (i % 100 == 0) {
pstmt.executeBatch();
pstmt.clearBatch();
}
}
// Execute remaining statements
pstmt.executeBatch();
conn.commit();
System.out.println("Batch insert completed successfully");
} catch (SQLException e) {
conn.rollback();
throw e;
} finally {
conn.setAutoCommit(true);
}
}
Yhteyden poolaus HikariCP:n kanssa
Määritä HikariCP JDBC-URL:llä siten, että se luo yhteyksiä kautta LivyDriver. Luo yksi HikariCP-instanssi ja käytä sitä uudelleen sovelluksen elinkaaren ajan.
Maven-riippuvuus
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.1</version>
</dependency>
Määritä HikariCP JDBC-URL:llä
Määritä JDBC:n URL-osoite ja ajuriluokka siten, että HikariCP luo fyysiset yhteydet .LivyDriver Kuljettajaluokan määrittäminen eksplisiittisesti on valinnaista, kun JDBC-palveluntarjoajan automaattinen tunnistus on saatavilla:
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public final class DriverConnectionPoolExample {
public static HikariDataSource createPool(String url) {
HikariConfig config = new HikariConfig();
config.setDriverClassName("com.microsoft.spark.livy.jdbc.LivyDriver");
config.setJdbcUrl(url);
// Keep pool sizes small: each classic-mode physical connection owns a Livy session.
config.setMaximumPoolSize(2);
config.setMinimumIdle(0);
config.setConnectionTimeout(900000); // Wait up to 15 minutes to borrow a connection
config.setInitializationFailTimeout(-1); // Skip startup validation; connect on demand
config.setIdleTimeout(600000); // 10 minutes
config.setMaxLifetime(1800000); // 30 minutes
config.setPoolName("FabricSparkDriverPool");
return new HikariDataSource(config);
}
public static void main(String[] args) throws SQLException {
String url = "jdbc:fabricspark://api.fabric.microsoft.com;" +
"FabricWorkspaceID=<workspace-id>;" +
"FabricLakehouseID=<lakehouse-id>;" +
"AuthFlow=AZURE_CLI;" + // Uses the DefaultAzureCredential chain
"LivySessionTimeoutSeconds=600"; // Poll up to 10 minutes for session readiness
// Reuse this pool for the application lifetime; main closes it at process exit.
try (HikariDataSource pool = createPool(url);
Connection conn = pool.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 'Pooled LivyDriver connection!' as message")) {
if (rs.next()) {
System.out.println(rs.getString("message"));
}
}
}
}
Käytä seuraavia ohjeita poolin konfiguroinnissa:
| Ympäristö tai käyttäytyminen | Opastus |
|---|---|
connectionTimeout |
Se hallitsee, kuinka kauan soittaja odottaa yhteyden lainaamista, mutta ei peruuta jo käynnissä olevaa yhteydenpitoyritystä. Aseta se korkeammaksi kuin LivySessionTimeoutSeconds jotta autentikointiin, istunnon luomiseen, HTTP-kokeiluihin ja alkuvaiheen validointiin jää aikaa. |
| Yhteyden validointi | HikariCP käyttää Connection.isValid(). Sen tehokasta kestoa säätelee ajurin HTTP-aikakatkaisu ja uudelleenyritys/peruutusasetukset, ei HikariCP validationTimeout:n. Älä määritä yhteystestikyselyä, koska se korvaa kevyemmän validointitarkistuksen Spark-lauseella. |
Täydelliset HikariCP-konfiguraatiovaihtoehdot löytyvät katso:
Tietotyyppien kartoitus
Ajuri yhdistää Spark SQL -tietotyypit JDBC:n SQL-tyyppeihin ja Java-tyyppeihin:
| Spark SQL Type | JDBC SQL Type | Java-tyyppi | Muistiinpanot |
|---|---|---|---|
BOOLEAN |
BOOLEAN |
Boolean |
|
BYTE |
TINYINT |
Byte |
|
SHORT |
SMALLINT |
Short |
|
INT |
INTEGER |
Integer |
|
LONG |
BIGINT |
Long |
|
FLOAT |
FLOAT |
Float |
|
DOUBLE |
DOUBLE |
Double |
|
DECIMAL |
DECIMAL |
BigDecimal |
Tarkkuus ja mittakaava säilynyt |
STRING |
VARCHAR |
String |
|
VARCHAR(n) |
VARCHAR |
String |
|
CHAR(n) |
CHAR |
String |
|
BINARY |
BINARY |
byte[] |
|
DATE |
DATE |
java.sql.Date |
|
TIMESTAMP |
TIMESTAMP |
java.sql.Timestamp |
|
ARRAY |
VARCHAR |
String |
Sarjoitettu nimellä JSON |
MAP |
VARCHAR |
String |
Sarjoitettu nimellä JSON |
STRUCT |
VARCHAR |
String |
Sarjoitettu nimellä JSON |