Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Api:et för Spark-datakälla kan du läsa från och skriva till externa databaser direkt från Azure Databricks. Använd den bara när du behöver den fullständiga flexibiliteten i Spark-motorn, vill köra interna frågor på källan eller kräva skrivåtkomst till externa system. I allmänhet rekommenderar Azure Databricks styrd, skrivskyddad åtkomst med automatisk Spark- eller SQL-frågenedrullning. Se Vad är sökfrågefederation?.
Spark Data Source-API:et har specifika beteenden för anslutning, frågekörning och schemaidentifiering.
- Den primära arbetsbelastningen och eventuella efterföljande Spark-transformeringar körs på Azure Databricks Spark-klustret.
- När du använder
queryalternativet körs den angivna SQL-instruktionen helt på den externa datakällan. Spark hämtar resultatet utan att utföra transformeringsnedtryckning på frågesträngen. - Anslutningen kräver antingen en Azure Databricks paketerad anslutningsapp, en JDBC-drivrutin som tillhandahålls av användaren eller en anpassad PySpark-datakälla.
- Spark läser automatiskt schemat från den externa databastabellen och mappar dess typer till Spark SQL-typer.
Använd en medföljande anslutningsapp
Databricks Runtime innehåller optimerade anslutningar för vanliga datakällor. Se Anslutningsprogram som medföljer för en fullständig lista.
Paketerade anslutningsappar använder host och port som separata alternativ i stället för en fullständig JDBC-URL-sträng.
Läsa data med hjälp av en direktfråga
Med alternativet query ser du till att filter- och kopplingslogik körs på källdatabasen innan data når Spark. För styrd läsåtkomst med automatisk frågenedtryckning och behörighetsdelegering i Unity Catalog via vyer bör du överväga fjärrfrågor i stället.
df = (spark.read
.format("sqlserver")
.option("host", "<your-sql-server-instance>.database.windows.net")
.option("user", dbutils.secrets.get(scope="<scope>", key="<user>"))
.option("password", dbutils.secrets.get(scope="<scope>", key="<password>"))
.option("database", "<database-name>")
.option("query", "SELECT id, name FROM users WHERE active = 1")
.load())
Skrivdata
Ange ett skrivläge med .mode() för att styra hur data skrivs. Använd append för att lägga till rader i en befintlig tabell eller overwrite för att ersätta dess innehåll.
(df.write
.format("sqlserver")
.mode("overwrite")
.option("host", "<your-sql-server-instance>.database.windows.net")
.option("user", dbutils.secrets.get(scope="<scope>", key="<user>"))
.option("password", dbutils.secrets.get(scope="<scope>", key="<password>"))
.option("database", "<database-name>")
.option("dbtable", "<table-name>")
.save())
Använda en JDBC UC-anslutning
Om en källspecifik anslutning inte medföljer, eller om du vill använda en specifik version av JDBC-drivrutinen, ska du använda en JDBC-anslutning för Unity Catalog. På så sätt kan du centralisera hantering av autentiseringsuppgifter och ta med din egen JDBC-drivrutin.
En JDBC Unity Catalog-anslutning ger flera fördelar jämfört med att använda en paketerad anslutningsapp eller rå JDBC-drivrutin direkt. Med en JDBC Unity Catalog-anslutning kan du:
- Ta med din egen JDBC-drivrutins-JAR för alla databaser som stöder JDBC.
- Skapa anslutningen en gång och återanvänd den i serverlösa, standard- och dedikerade kluster.
- Använd styrd åtkomst till datakällan med hjälp av ett Unity Catalog-anslutningsobjekt.
- Dölj autentiseringsuppgifterna för anslutningen från den frågande användaren.
- Läsa från och skriva till externa databaser via Spark Data Source-API:et.
Om du vill använda en JDBC Unity Catalog-anslutning anger du databricks.connection i dina Spark-alternativ:
df = (spark.read
.format("jdbc")
.option("databricks.connection", "<connection-name>")
.option("query", "SELECT * FROM external_table")
.load())
Installationsinstruktioner finns i JDBC-anslutning.
Använd en anpassad anslutning i dedikerade kluster
På dedikerade (klassiska) kluster kan du installera Spark-datakällskopplingar från tredje part eller JDBC-drivrutiner som inte medföljer Databricks Runtime.
Använd den här metoden när:
- Du behöver en Spark-anslutningsapp från tredje part för system som MongoDB, Cassandra, Couchbase eller Elasticsearch.
- Du behöver en specifik drivrutinsversion som inte ingår i körmiljön.
- Du vill installera en JDBC-drivrutin direkt i klustret utan att konfigurera en Anslutning till Unity Catalog.
Installera ett anslutningsprogram eller en drivrutin
Installera biblioteket på klustret via Compute>ditt kluster>Bibliotek>Installera ny. Du kan använda Maven-koordinater direkt utan att ladda ned eller ladda upp några JAR:er. Starta om klustret så att biblioteket träder i kraft.
Läsa data
När anslutningsappen har installerats använder du anslutningsappens formatnamn och de anslutningsalternativ som krävs för att läsa data.
df = (spark.read
.format("mongodb")
.option("connection.uri", "mongodb://<hostname>:27017")
.option("database", "<database-name>")
.option("collection", "<collection-name>")
.load())
Skrivdata
Använd samma formatnamn och anslutningsalternativ för att skriva tillbaka data till källan.
(df.write
.format("mongodb")
.mode("overwrite")
.option("connection.uri", "mongodb://<hostname>:27017")
.option("database", "<database-name>")
.option("collection", "<collection-name>")
.save())
Considerations
Tänk på följande när du använder anpassade anslutningsprogram i dedikerade kluster.
- Drivrutinen eller anslutningsappen är endast tillgänglig i klustret där den är installerad.
- Anpassade Spark-JAR:er från tredje part stöds inte i Databricks SQL-, serverlösa eller standardåtkomstlägeskluster. För dessa beräkningstyper använder du paketerade anslutningar eller JDBC-anslutningar till Unity Catalog.
Anpassade datakällor i PySpark
Med api:et Python DataSource kan du skapa anpassade dataanslutningar helt i Python, utan JAR eller JVM-baserade bibliotek. Använd detta när du behöver ansluta till REST-API:er, SaaS-program eller något system utan ett JDBC-gränssnitt eller när du vill generera syntetiska data programmatiskt. API:et stöder både batch- och direktuppspelningsläsningar och skrivningar.
Anmärkning
Anpassade PySpark-datakällor kräver Databricks Runtime 15.4 LTS eller senare.
För konfiguration, exempel och API-referens, se PySpark anpassade datakällor.
Jämföra integreringsstrategier
I följande tabell jämförs Spark Data Source-API:et med Lakehouse Federation och Lakeflow Connect för att hjälpa dig att välja rätt metod för ditt användningsfall.
| Feature | API för Spark-datakälla | Lakehouse Federation | Lakeflow Connect |
|---|---|---|---|
| Primärt användningsfall | Komplex ETL, anpassad Spark-logik, direktfrågor | Ad hoc-frågor, BI-rapportering | Storskalig, automatiserad inmatning |
| Dataförflyttning | Inläst i Spark-minne (tillfälliga) | Inläst i Spark-minne (tillfälliga) | Kopierad till Delta Lake (beständig) |
| Frågekörning | Manuell nedtryckning med det inbyggda query-alternativet |
Automatisk nedtryckning av filter, sammanfogningar och aggregeringar i Spark och SQL | Inte tillämpligt (fullständig tabellreplikering) |
| Governance | Unity Catalog-anslutning (JDBC) eller hemliga omfång | Unity Catalog (federerad katalog) | Unity Catalog (hanterad pipeline) |
| Passar bäst för | Avancerade användare som behöver full flexibilitet i Spark | Minimera dataförflyttningar samtidigt som styrningen bevaras | CDC- och inmatningspipelines i produktion |
Anslutningar som medföljer och stöds
Följande datakällor paketeras i Databricks Runtime och kan anropas direkt via Spark. Läsningar och skrivningar stöds i dedikerade kluster och standardkluster.
Anmärkning
Skrivningar på serverlös beräkning stöds för PostgreSQL, SQL Server, MySQL, Snowflake och Redshift. Se alternativ för skrivning i serverlösa medföljande anslutningar för information om vilka anslutningsalternativ som stöds.
| Datakälla |
spark.format() Namn |
|---|---|
| PostgreSQL | "postgresql" |
| SQL Server | "sqlserver" |
| MySQL och MariaDB | "mysql" |
| Snöflinga | "snowflake" |
| Amazon Redshift | "redshift" |
| Google BigQuery (ett molnbaserat dataanalysverktyg) | "bigquery" |
| Azure Synapse | "SQLDW" |
| HTTP | "http" |
Limitations
Följande begränsningar gäller när du använder Spark Data Source-API:et i Azure Databricks.
- Spark-alternativ för paketerade datakällor är begränsade till
query,dbtableoch en liten uppsättning anslutningsspecifika alternativ. - Anpassade Spark-JAR:er från tredje part kan bara installeras på dedikerade kluster. För serverlösa eller standardkluster använder du medföljande kopplingar eller JDBC-anslutningar till Unity Catalog.
- Anpassade PySpark-datakällor kräver Databricks Runtime 15.4 LTS eller senare.