Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozhraní API zdroje dat Sparku umožňuje čtení a zápis do externích databází přímo z Azure Databricks. Používejte ho jenom v případě, že potřebujete plnou flexibilitu modulu Spark, chcete na zdroji spouštět nativní dotazy nebo vyžadovat přístup k zápisu do externích systémů. Obecně platí, že Azure Databricks doporučuje řídit přístup jen pro čtení pomocí automatického nabízení dotazů Spark nebo SQL. Viz Co je federace dotazů?
Rozhraní API zdroje dat Sparku má specifické chování pro připojení, spouštění dotazů a detekci schématu.
- Primární úloha a všechny následné transformace Sparku se spouští v clusteru Azure Databricks Spark.
- Při použití této
querymožnosti se zadaný příkaz SQL spustí zcela na externím zdroji dat. Spark načte výsledky bez provedení posunu transformace v řetězci dotazu. - Připojení vyžaduje buď konektor se sadou Azure Databricks, ovladač JDBC poskytovaný uživatelem nebo vlastní zdroj dat PySpark.
- Spark automaticky načte schéma z tabulky externí databáze a mapuje jeho typy na typy Spark SQL.
Použijte přibalený konektor
Databricks Runtime zahrnuje optimalizované konektory pro běžné zdroje dat. Úplný seznam najdete v části Podporované integrované konektory.
Přibalené konektory používají host a port jako samostatné volby místo úplného řetězce JDBC URL.
Načtení dat pomocí průchozího dotazu
query Pomocí této možnosti zajistíte, že se logika filtrování a spojení spustí ve zdrojové databázi předtím, než data dosáhnou Sparku. Pro řízený přístup pro čtení s automatickým předáváním dotazů a delegováním oprávnění Unity Catalogu prostřednictvím zobrazení zvažte raději vzdálené dotazy.
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())
Zápis dat
Určete režim zápisu, .mode() se kterým můžete řídit způsob zápisu dat. Slouží append k přidání řádků do existující tabulky nebo overwrite k nahrazení jejího obsahu.
(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())
Použijte připojení JDBC UC
Pokud není konektor specifický pro zdroj, nebo pokud chcete použít konkrétní verzi ovladače JDBC, použijte připojení katalogu JDBC Unity. Díky tomu můžete centralizovat správu přihlašovacích údajů a použít vlastní ovladač JDBC.
Připojení katalogu JDBC Unity nabízí několik výhod oproti přímému použití sbaleného konektoru nebo nezpracovaného ovladače JDBC. S připojením katalogu JDBC Unity můžete:
- Přineste si vlastní soubor JAR ovladače JDBC pro libovolnou databázi, která podporuje JDBC.
- Vytvořte připojení jednou a znovu ho použijte napříč bezserverovými, standardními a vyhrazenými clustery.
- Využijte řízený přístup ke zdroji dat pomocí objektu připojení katalogu Unity.
- Skryjte přihlašovací údaje připojení od uživatele, který se dotazuje.
- Čtení z externích databází a zápis do externích databází prostřednictvím rozhraní API zdroje dat Sparku
Pokud chcete použít připojení k katalogu Unity JDBC, zadejte databricks.connection v možnostech Sparku:
df = (spark.read
.format("jdbc")
.option("databricks.connection", "<connection-name>")
.option("query", "SELECT * FROM external_table")
.load())
Pokyny k nastavení najdete v tématu připojení JDBC.
Použití vlastního konektoru ve vyhrazených clusterech
Ve vyhrazených (klasických) clusterech můžete nainstalovat konektory zdroje dat Sparku jiného výrobce nebo ovladače JDBC, které nejsou součástí modulu Databricks Runtime.
Tento přístup použijte v těchto případech:
- Potřebujete konektor Spark třetí strany pro systémy, jako jsou MongoDB, Cassandra, Couchbase nebo Elasticsearch.
- Potřebujete konkrétní verzi ovladače, která není součástí modulu runtime.
- Chcete nainstalovat ovladač JDBC přímo do clusteru bez nastavení připojení katalogu Unity.
Instalace konektoru nebo ovladače
Nainstalujte knihovnu do clusteru v Compute>vašem clusteru>Knihovny>Nainstalovat novou. Souřadnice Maven můžete použít přímo bez stahování nebo nahrávání jakýchkoli souborů JAR. Restartujte cluster, aby se změny v knihovně projevily.
Čtení dat
Po instalaci konektoru použijte název formátu konektoru a požadované možnosti připojení ke čtení dat.
df = (spark.read
.format("mongodb")
.option("connection.uri", "mongodb://<hostname>:27017")
.option("database", "<database-name>")
.option("collection", "<collection-name>")
.load())
Zápis dat
Ke zápisu dat zpět do zdroje použijte stejný název formátu a možnosti připojení.
(df.write
.format("mongodb")
.mode("overwrite")
.option("connection.uri", "mongodb://<hostname>:27017")
.option("database", "<database-name>")
.option("collection", "<collection-name>")
.save())
Considerations
Při používání vlastních konektorů ve vyhrazených clusterech mějte na paměti následující skutečnosti.
- Ovladač nebo konektor je k dispozici pouze v clusteru, na kterém je nainstalovaný.
- Vlastní Spark JAR soubory třetích stran nejsou podporovány v Databricks SQL, v prostředí serverless ani v clusterech se standardním režimem přístupu. Pro tyto typy výpočetních prostředí použijte integrované konektory nebo připojení Unity Catalog JDBC.
Vlastní zdroje dat PySpark
Rozhraní API Python DataSource umožňuje vytvářet vlastní datové konektory zcela v Python bez knihoven ZALOŽENÝch na JARs nebo JVM. Tuto možnost použijte, když se potřebujete připojit k rozhraním REST API, aplikacím SaaS nebo libovolnému systému bez rozhraní JDBC nebo když chcete generovat syntetická data prostřednictvím kódu programu. Rozhraní API podporuje dávkové i streamované čtení a zápisy.
Note
Vlastní zdroje dat PySpark vyžadují Databricks Runtime 15.4 LTS nebo vyšší.
Informace o nastavení, příkladech a referenčních informacích k rozhraní API najdete v tématu Vlastní zdroje dat PySpark.
Porovnání strategií integrace
Následující tabulka porovnává rozhraní API zdroje dat Sparku s Lakehouse Federation a Lakeflow Connect a pomáhá vám zvolit správný přístup pro váš případ použití.
| Vlastnost | Rozhraní API zdroje dat Sparku | Federace Lakehouse | Lakeflow Connect |
|---|---|---|---|
| Primární případ použití | Komplexní ETL, vlastní logika Sparku, předávací dotazy | Ad hoc dotazy, generování sestav BI | Vysoce škálovatelný automatizovaný příjem dat |
| Přenos dat | Načteno do paměti Sparku (dočasný) | Načteno do paměti Sparku (dočasný) | Zkopírováno do Delta Lake (trvale uložené) |
| Provedení dotazu | Ruční nasazení pomocí nativní možnosti query |
Automatický pushdown filtrů Spark a SQL, spojování a agregací | Nejde použít (úplná replikace tabulek) |
| Governance | Připojení Unity Catalogu (JDBC) nebo oblasti tajných klíčů | Katalog Unity (federovaný katalog) | Katalog Unity (spravovaný kanál) |
| Nejvhodnější pro | Pokročilí uživatelé vyžadující plnou flexibilitu platformy Spark | Minimalizace přesunu dat při zachování zásad správného řízení | Produkční kanály CDC a příjem dat |
Podporované konektory v balíčku
Následující zdroje dat jsou součástí modulu Databricks Runtime a můžou se volat přímo prostřednictvím Sparku. Čtení a zápisy se podporují u vyhrazených a standardních clusterů.
Note
Zápisy na bezserverové výpočetní prostředky se podporují pro PostgreSQL, SQL Server, MySQL, Snowflake a Redshift. Možnosti podporovaných konektorů najdete v tématu Možnosti bezserverového zápisu pro integrované konektory.
| Zdroj dat |
spark.format() Jméno |
|---|---|
| PostgreSQL | "postgresql" |
| SQL Server | "sqlserver" |
| MySQL a MariaDB | "mysql" |
| Snowflake | "snowflake" |
| Amazon Redshift | "redshift" |
| Google BigQuery (platforma pro analýzu velkých dat od Googlu) | "bigquery" |
| Azure Synapse | "SQLDW" |
| HTTP | "http" |
Omezení
Při používání rozhraní API zdroje dat Sparku v Azure Databricks platí následující omezení.
- Možnosti Sparku pro sbalené zdroje dat jsou omezené na
queryadbtablemalá sada možností specifických pro konektory. - Vlastní sady SPARK JAR třetích stran je možné nainstalovat jenom na vyhrazené clustery. Pro bezserverové nebo standardní clustery použijte přibalené konektory nebo připojení JDBC ke službě Unity Catalog.
- Vlastní zdroje dat PySpark vyžadují Databricks Runtime 15.4 LTS nebo vyšší.