Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
JDBC (Java Database Connectivity) er en mye brukt standard som gjør det mulig for klientapplikasjoner å koble til og arbeide med data fra databaser og big data-plattformer.
Microsoft JDBC Driver for Fabric Data Engineering lar deg koble til, spørre og administrere Spark-arbeidsbelastninger i Fabric med påliteligheten og enkelheten til JDBC-standarden. Bygget på Fabric sine Livy-API-er, gir driveren sikker og fleksibel Spark SQL-tilkobling til dine Java-applikasjoner og BI-verktøy. Denne integrasjonen lar deg sende inn og kjøre Spark-kode direkte uten å måtte lage separate notatbok- eller Spark-jobbdefinisjonselementer. Driveren er kompatibel med populære JDBC-klienter som DbVisualizer og DBeaver, samt BI-verktøy som støtter JDBC-tilkobling, inkludert Tableau.
Viktige funksjoner
- JDBC 4.2-kompatibel: Full implementering av JDBC 4.2-spesifikasjonen
- Microsoft Entra ID-autentisering: Flere autentiseringsflyter inkludert interaktiv, klientlegitimasjon og sertifikatbasert autentisering
- HikariCP-integrasjon: Bruk HikariCP til å administrere og gjenbruke JDBC-tilkoblinger for produksjonsapplikasjoner
- Spark SQL Native Query Support: Direkte kjøring av Spark SQL-setninger uten oversettelse
- Omfattende støtte for datatyper: Støtte for alle Spark SQL-datatyper, inkludert komplekse typer (ARRAY, MAP, STRUCT)
- Asynkron resultatsett-prefetching: Bakgrunnsdatainnlasting for bedre ytelse
- Sikringsmønster: Beskyttelse mot kaskaderende feil med automatisk omprøving
- Auto-retilkobling: Transparent sesjonsgjenoppretting ved tilkoblingsfeil
- Avansert retry-logikk: Retry med eksponentiell backoff og sesjonsgjenoppretting for bedre motstandskraft
- Proxy-støtte: HTTP- og SOCKS-proxykonfigurasjon for bedriftsmiljøer
Forutsetning
Før du bruker Microsoft JDBC Driver for Fabric Data Engineering, sørg for at du har:
- Java Development Kit (JDK): Versjon 11 eller nyere (Java 21 anbefales)
- Fabric Access: Tilgang til et Fabric-arbeidsområde
- Microsoft Entra ID legitimasjon: Passende legitimasjon for autentisering
- Workspace- og Lakehouse-ID-er: GUID-identifikatorer for ditt Fabric workspace og lakehouse
Nedlasting og installasjon
Microsoft JDBC Driver for Fabric Data Engineering versjon 1.0.0 støtter Java 11, 17 og 21. Vi forbedrer kontinuerlig støtte for Java-tilkobling og anbefaler at du bruker den nyeste versjonen av Microsoft JDBC-driveren.
- Last ned Microsoft JDBC Driver for Fabric Data Engineering (zip)
- Last ned Microsoft JDBC Driver for Fabric Data Engineering (tar)
- Last ned enten zip- eller tar-filen fra lenkene ovenfor.
- Pakk ut den nedlastede filen for å få tilgang til driverens JAR-filer.
- Velg JAR-filen som matcher din JRE-versjon:
- For Java 11:
ms-sparksql-jdbc-1.0.1.jre11.jar - For Java 17:
ms-sparksql-jdbc-1.0.1.jre17.jar - For Java 21:
ms-sparksql-jdbc-1.0.1.jre21.jar
- For Java 11:
- Legg til den valgte JAR-filen i applikasjonens klassesti.
- For JDBC-klienter, konfigurer JDBC-driverklassen:
com.microsoft.spark.livy.jdbc.LivyDriver
Eksempel på Quick Start
Dette eksempelet demonstrerer hvordan man kobler til Fabric og kjører en spørring ved hjelp av Microsoft JDBC Driver for Fabric Data Engineering. Før du kjører denne koden, sørg for at du har fullført forutsetningene og installert driveren.
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();
}
}
}
Tilkoblingsstrengformat
Grunnleggende tilkoblingsstreng
Microsoft JDBC Driver for Fabric Data Engineering bruker følgende tilkoblingsstreng-format:
jdbc:fabricspark://<hostname>[:<port>][;<parameter1>=<value1>;<parameter2>=<value2>;...]
Tilkoblingsstrengkomponenter
| Komponent | Beskrivelse | Eksempel |
|---|---|---|
| Protokoll | JDBC URL-protokollidentifikator | jdbc:fabricspark:// |
| Vertsnavn | Fabric-endepunktets vertsnavn | api.fabric.microsoft.com |
| Havn | Valgfritt portnummer (standard: 443) | :443 |
| Parametere | Semikolon-separert nøkkel=verdipar | FabricWorkspaceID=<guid> |
Eksempler på tilkoblingsstrenger
Grunnleggende tilkobling (interaktiv nettleserbasert autentisering)
jdbc:fabricspark://api.fabric.microsoft.com;FabricWorkspaceID=<workspace-id>;FabricLakehouseID=<lakehouse-id>;AuthFlow=1
Med Spark Resource Configuration
jdbc:fabricspark://api.fabric.microsoft.com;FabricWorkspaceID=<workspace-id>;FabricLakehouseID=<lakehouse-id>;DriverCores=4;DriverMemory=4g;ExecutorCores=4;ExecutorMemory=8g;NumExecutors=2;AuthFlow=2
Med Spark Session-egenskaper
jdbc:fabricspark://api.fabric.microsoft.com;FabricWorkspaceID=<workspace-id>;FabricLakehouseID=<lakehouse-id>;spark.sql.adaptive.enabled=true;spark.sql.shuffle.partitions=200;AuthFlow=2
Autentisering
Microsoft JDBC Driver for Fabric Data Engineering støtter flere autentiseringsmetoder gjennom Microsoft Entra ID (tidligere Azure Active Directory). Autentisering konfigureres ved å bruke parameteren AuthFlow i tilkoblingsstrengen.
Autentiseringsflyter
| AuthFlow | Godkjenningsmetode | Bruk sak |
|---|---|---|
| 1 | Interaktiv nettleser | Interaktiv brukerautentisering ved bruk av OAuth 2.0 |
| 2 | Azure CLI | Utvikling med Azure CLI |
| 3 | Klienthemmelige legitimasjoner (tjenesteleder) | Automatisert/tjeneste-til-tjeneste-autentisering |
| 4 | Klientsertifikat | Sertifikatbasert autentisering av tjenestehovedpersoner |
| 5 | Tilgangstoken | Forhåndsanskaffet bærertilgangstoken |
Interaktiv nettleserautentisering
Best for: Utvikling og interaktive applikasjoner
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);
Parametere:
-
AuthFlow=1: Spesifiserer interaktiv nettleserautentisering -
AuthTenantID(valgfritt): Microsoft Entra leietaker-ID -
AuthClientID(valgfritt): Applikasjons-ID (klient)
Oppførsel:
- Åpner et nettleservindu for brukerautentisering
- Legitimasjonen lagres for påfølgende tilkoblinger til den utløper
- Egnet for enkeltbrukerapplikasjoner
Klientlegitimasjon eller autentisering av tjenestehovedpersoner
Best for: Automatiserte tjenester og bakgrunnsjobber
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);
Nødvendige parametere:
-
AuthFlow=3: Spesifiserer autentisering av klientlegitimasjon -
AuthClientID: Applikasjons-(klient-)ID fra Microsoft Entra-ID -
AuthClientSecret: Klienthemmelighet fra Microsoft Entra-ID -
AuthTenantID: Microsoft Entra leietaker-ID
Beste praksis:
- Lagre hemmeligheter sikkert (Azure Key Vault, miljøvariabler)
- Bruk administrerte identiteter når det er mulig
- Roter hemmeligheter regelmessig
Certificate-Based Autentisering
Best for: Bedriftsapplikasjoner som krever sertifikatbasert autentisering
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);
Nødvendige parametere:
-
AuthFlow=4: Spesifiserer sertifikatbasert autentisering -
AuthClientID: Applikasjons-ID (klient-ID) -
AuthCertificatePath: Vei til PFX/PKCS12-sertifikatfilen -
AuthCertificatePassword: Sertifikatpassord -
AuthTenantID: Microsoft Entra leietaker-ID
Autentisering av tilgangstoken
Best for: Tilpassede autentiseringsscenarier
// 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);
Autentiseringsbuffer
Driveren cacher automatisk autentiseringstokene for å forbedre ytelsen:
// 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);
Konfigurasjonsparametere
Obligatoriske parametere
Disse parameterne må være til stede i hver tilkoblingsstreng:
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
FabricWorkspaceID |
UUID | Identifikator for stoffarbeidsområde | <workspace-id> |
FabricLakehouseID |
UUID | Fabric lakehouse-identifikator | <lakehouse-id> |
AuthFlow |
Integer | Autentiseringsflyttype (1-5) | 2 |
Valgfrie parametere
API-versjonskonfigurasjon
| Parameter | Type | Default | Beskrivelse |
|---|---|---|---|
FabricVersion |
Streng | v1 |
Fabric API-versjon |
LivyApiVersion |
Streng | 2023-12-01 |
Livy API-versjon |
Miljøkonfigurasjon
| Parameter | Type | Default | Beskrivelse |
|---|---|---|---|
FabricEnvironmentID |
UUID | Ingen | Fabric-miljøidentifikator for referanse til miljøelement for Spark-sesjon |
Spark-konfigurasjon
Sesjonsressurskonfigurasjon
Konfigurer Spark-sesjonsressurser for optimal ytelse:
| Parameter | Type | Default | Beskrivelse | Eksempel |
|---|---|---|---|---|
DriverCores |
Integer | Spark-standard | Antall CPU-kjerner for driver | 4 |
DriverMemory |
Streng | Spark-standard | Minneallokering for driver | 4g |
ExecutorCores |
Integer | Spark-standard | Antall CPU-kjerner per utøver | 4 |
ExecutorMemory |
Streng | Spark-standard | Minneallokering per utøver | 8g |
NumExecutors |
Integer | Spark-standard | Antall eksekutorer | 2 |
Eksempel:
DriverCores=4;DriverMemory=4g;ExecutorCores=4;ExecutorMemory=8g;NumExecutors=2
Egendefinerte Spark-sesjonsegenskaper
Enhver parameter med prefikset spark. brukes automatisk på Spark-økten:
Eksempler på Spark-konfigurasjoner:
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
Innebygd utførelsesmotor (NEE):
spark.nee.enabled=true
Fullstendig eksempel:
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-klienttilkoblingsinnstillinger
Konfigurer driverens HTTP-transportforbindelser for optimal nettverksytelse. Disse innstillingene konfigurerer eller administrerer ikke JDBC-tilkoblingspooling:
| Parameter | Type | Default | Beskrivelse |
|---|---|---|---|
HttpMaxTotalConnections |
Integer | 100 | Maksimalt antall HTTP-tilkoblinger |
HttpMaxConnectionsPerRoute |
Integer | 50 | Maksimalt antall forbindelser per rute |
HttpConnectionTimeoutInSeconds |
Integer | 30 | Tidsavbrudd for tilkobling |
HttpSocketTimeoutInSeconds |
Integer | 60 | Sokkellesetidsavbrudd |
HttpReadTimeoutInSeconds |
Integer | 60 | HTTP-lesetidsavbrudd |
HttpConnectionRequestTimeoutSeconds |
Integer | 30 | Timeout for tilkoblingsforespørsel fra poolen |
HttpEnableKeepAlive |
boolsk | sann | Aktiver HTTP keep-alive |
HttpKeepAliveTimeoutSeconds |
Integer | 60 | Hold i live-timeout |
HttpFollowRedirects |
boolsk | sann | Følg HTTP-omdirigeringer |
HttpUseAsyncIO |
boolsk | falsk | Bruk asynkron HTTP I/O |
Eksempel:
HttpMaxTotalConnections=200;HttpMaxConnectionsPerRoute=100;HttpConnectionTimeoutInSeconds=60
Proxy-konfigurasjon
Konfigurer HTTP- og SOCKS-proxyinnstillinger for bedriftsmiljøer:
| Parameter | Type | Default | Beskrivelse |
|---|---|---|---|
UseProxy |
boolsk | falsk | Aktiver proxy |
ProxyTransport |
Streng | http |
Proxy-transporttype (http/tcp) |
ProxyHost |
Streng | Ingen | Proxy-vertsnavn |
ProxyPort |
Integer | Ingen | Proxy-port |
ProxyAuthEnabled |
boolsk | falsk | Aktiver proxy-autentisering |
ProxyUsername |
Streng | Ingen | Proxy-autentiseringsbrukernavn |
ProxyPassword |
Streng | Ingen | Proxy-autentiseringspassord |
ProxyAuthScheme |
Streng | basic |
Auth-skjema (basic/digest/ntlm) |
ProxySocksVersion |
Integer | 5 | SOCKS-versjonen (4/5) |
Eksempel på HTTP-proxy:
UseProxy=true;ProxyTransport=http;ProxyHost=proxy.company.com;ProxyPort=8080;ProxyAuthEnabled=true;ProxyUsername=user;ProxyPassword=pass
SOCKS-proxy-eksempel:
UseProxy=true;ProxyTransport=tcp;ProxyHost=socks.company.com;ProxyPort=1080;ProxySocksVersion=5
Konfigurasjon av logging
| Parameter | Type | Default | Beskrivelse |
|---|---|---|---|
LogLevel |
Streng | INFO |
Loggingsnivå: SPOR, FEILSØK, INFO, ADVARSEL, FEIL |
Eksempel:
LogLevel=DEBUG
Standard loggplassering:
${user.home}/.microsoft/livy-jdbc-driver/driver.log
Egendefinert loggkonfigurasjon: Bruk en egendefinert log4j2.xml fil eller logback.xml fil på klassestien din.
Brukseksempler
Grunnleggende tilkobling
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();
}
}
}
Utførelse av forespørsler
Enkel spørring
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);
}
}
}
Søk med filter
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);
}
}
}
Søk med grense
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();
}
}
}
Arbeid med resultatsett
Navigering av resultatsett
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"));
}
}
}
Behandling av store resultatsett
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
}
Bruk av forberedte utsagn
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);
}
}
}
}
Batchoperasjoner
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);
}
}
Tilkoblingspooling med HikariCP
Konfigurer HikariCP med JDBC-URL-en slik at den oppretter forbindelser gjennom LivyDriver. Lag én HikariCP-instans og gjenbruk den gjennom applikasjonens levetid.
Maven-avhengighet
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.1</version>
</dependency>
Konfigurer HikariCP med JDBC-URL-en
Konfigurer JDBC-URL-en og driverklassen slik at HikariCP oppretter fysiske forbindelser gjennom LivyDriver. Å sette driver-klassen eksplisitt er valgfritt når JDBC-tjenesteleverandørens auto-discovery er tilgjengelig:
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"));
}
}
}
}
Bruk følgende veiledning når du konfigurerer poolen:
| Setting eller atferd | Veiledning |
|---|---|
connectionTimeout |
Styrer hvor lenge en innringer venter på å låne en tilkobling, men avbryter ikke et tilkoblingsforsøk som allerede pågår. Sett den høyere enn LivySessionTimeoutSeconds for å gi tid til autentisering, sesjonsopprettelse, HTTP-retries og innledende validering. |
| Bekreftelse av tilkobling | HikariCP bruker Connection.isValid(). Den effektive varigheten styres av driverens HTTP-timeout og retry/backoff-innstillinger, ikke HikariCPs validationTimeout. Ikke konfigurer en tilkoblingstestspørring, fordi den erstatter den lettere valideringssjekken med en Spark-setning. |
For den komplette listen over HikariCP-konfigurasjonsalternativer, se:
Datatypekartlegging
Driveren tilordner Spark SQL-datatyper til JDBC SQL-typer og Java-typer:
| Spark SQL Type | JDBC SQL Type | Java-type | Notater |
|---|---|---|---|
BOOLEAN |
BOOLEAN |
Boolean |
|
BYTE |
TINYINT |
Byte |
|
SHORT |
SMALLINT |
Short |
|
INT |
INTEGER |
Integer |
|
LONG |
BIGINT |
Long |
|
FLOAT |
FLOAT |
Float |
|
DOUBLE |
DOUBLE |
Double |
|
DECIMAL |
DECIMAL |
BigDecimal |
Presisjon og skala bevart |
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 |
Serialisert som JSON |
MAP |
VARCHAR |
String |
Serialisert som JSON |
STRUCT |
VARCHAR |
String |
Serialisert som JSON |