Datové zdroje Spark

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 query mož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 querya dbtablemalá 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šší.