Sdílet prostřednictvím


Konektor Spark pro Microsoft Fabric Data Warehouse

Konektor Spark pro Data Warehouse infrastruktury umožňuje vývojářům Sparku a datovým vědcům přístup k datům ze skladu a koncovému bodu analýzy SQL lakehouse a pracovat s daty. Konektor nabízí následující funkce:

  • Můžete pracovat s daty ze skladu nebo koncového bodu SQL Analytics ve stejném pracovním prostoru nebo ve více pracovních prostorech.
  • Koncový bod analýzy SQL ve službě Lakehouse se automaticky zjistí na základě kontextu pracovního prostoru.
  • Konektor má zjednodušené rozhraní Spark API, abstrahuje základní složitost a funguje jenom s jedním řádkem kódu.
  • Když přistupujete k tabulce nebo zobrazení, konektor zachovává modely zabezpečení definované na úrovni modulu SQL. Mezi tyto modely patří zabezpečení na úrovni objektů (OLS), zabezpečení na úrovni řádků (RLS) a zabezpečení na úrovni sloupců (CLS).
  • Konektor je předinstalovaný v modulu runtime Fabric, který eliminuje potřebu samostatné instalace.

Poznámka:

Konektor je aktuálně ve verzi Preview. Další informace najdete v aktuálních omezeních dále v tomto článku.

Ověřování

Ověřování Microsoft Entra je integrovaný přístup k ověřování. Uživatelé se přihlásí k pracovnímu prostoru Microsoft Fabric a jejich přihlašovací údaje se automaticky předají modulu SQL za účelem ověřování a autorizace. Přihlašovací údaje se mapují automaticky a uživatelé nemusí zadávat konkrétní možnosti konfigurace.

Oprávnění

Aby se uživatelé mohli připojit k modulu SQL, musí mít alespoň oprávnění ke čtení (podobně jako oprávnění CONNECT v SQL Serveru) ve skladu nebo koncovém bodu analýzy SQL (úroveň položky). Uživatelé také potřebují podrobná oprávnění na úrovni objektu ke čtení dat z konkrétních tabulek nebo zobrazení. Další informace najdete v tématu Zabezpečení datových skladů v Microsoft Fabric.

Šablony kódu a příklady

Použití podpisu metody

Následující příkaz zobrazí synapsesql podpis metody pro požadavek pro čtení. Argument se třemi částmi tableName je nutný pro přístup k tabulkám nebo zobrazením ze skladu a koncového bodu analýzy SQL u jezerahouse. V závislosti na vašem scénáři aktualizujte argument následujícími názvy:

  • Část 1: Název skladu nebo jezera.
  • Část 2: Název schématu.
  • Část 3: Název tabulky nebo zobrazení
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame

Kromě čtení z tabulky nebo zobrazení přímo umožňuje tento konektor také zadat vlastní nebo předávací dotaz, který se předá modulu SQL a výsledek se vrátí zpět do Sparku.

spark.read.option(Constants.DatabaseName, "<warehouse/lakeshouse name>").synapsesql("<T-SQL Query>") => org.apache.spark.sql.DataFrame

I když tento konektor automaticky zjistí koncový bod pro zadaný sklad nebo jezero, pokud ho chcete explicitně zadat, můžete to udělat.

//For warehouse
spark.conf.set("spark.datawarehouse.<warehouse name>.sqlendpoint", "<sql endpoint,port>")
//For lakehouse
spark.conf.set("spark.lakehouse.<lakeshouse name>.sqlendpoint", "<sql endpoint,port>")
//Read from table
spark.read.synapsesql("<warehouse/lakeshouse name>.<schema name>.<table or view name>") 

Čtení dat ve stejném pracovním prostoru

Důležité

Na začátku poznámkového bloku nebo před použitím konektoru spusťte tyto příkazy importu:

Pro Scala

import com.microsoft.spark.fabric.tds.implicits.read.FabricSparkTDSImplicits._

import com.microsoft.spark.fabric.Constants

Pro PySpark (Python)

import com.microsoft.spark.fabric

from com.microsoft.spark.fabric.Constants import Constants

Následující kód je příkladem čtení dat z tabulky nebo zobrazení v datovém rámci Sparku:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")

Následující kód je příkladem čtení dat z tabulky nebo zobrazení v datovém rámci Sparku s limitem počtu řádků 10:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").limit(10)

Následující kód je příkladem čtení dat z tabulky nebo zobrazení v datovém rámci Sparku po použití filtru:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").filter("column name == 'value'")

Následující kód je příkladem čtení dat z tabulky nebo zobrazení v datovém rámci Sparku pouze pro vybrané sloupce:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").select("column A", "Column B")

Čtení dat napříč pracovními prostory

Pokud chcete získat přístup k datům ze skladu nebo skladu v rámci pracovních prostorů a číst jezero, můžete zadat ID pracovního prostoru, ve kterém existuje sklad nebo jezero, a pak ID položky lakehouse nebo skladu. Následující řádek obsahuje příklad čtení dat z tabulky nebo zobrazení v datovém rámci Sparku ze skladu nebo jezera s zadaným ID pracovního prostoru a ID jezera nebo skladu:

# For lakehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.LakehouseId, "<lakehouse item id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")

# For warehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.DatawarehouseId, "<warehouse item id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")

Poznámka:

Když poznámkový blok spouštíte, konektor ve výchozím nastavení vyhledá zadaný sklad nebo jezero v pracovním prostoru jezera, který je připojený k poznámkovému bloku. Pokud chcete odkazovat na sklad nebo lakehouse z jiného pracovního prostoru, zadejte ID pracovního prostoru a ID položky skladu, jak je uvedeno výše.

Vytvoření tabulky Lakehouse na základě dat ze skladu

Tyto řádky kódu poskytují příklad pro čtení dat z tabulky nebo zobrazení v datovém rámci Sparku a jeho použití k vytvoření tabulky lakehouse:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
df.write.format("delta").saveAsTable("<Lakehouse table name>")

Odstraňování potíží

Po dokončení se ve výstupu buňky zobrazí fragment odpovědi pro čtení. Selhání v aktuální buňce také zruší následné provádění buněk poznámkového bloku. Podrobné informace o chybách jsou k dispozici v protokolech aplikace Spark.

Aktuální omezení

V současné době konektor:

  • Podporuje načítání dat ze skladů Fabric a koncových bodů analýzy SQL položek lakehouse.
  • Služba Fabric DW teď podporuje Time Travel tento konektor, ale u dotazu se syntaxí časového cestování nefunguje.
  • Zachová podpis použití, jako je ten, který se dodává s Apache Sparkem pro Azure Synapse Analytics kvůli konzistenci. Není ale zpětně kompatibilní pro připojení a práci s vyhrazeným fondem SQL ve službě Azure Synapse Analytics.
  • Názvy sloupců se speciálními znaky se budou zpracovávat přidáním řídicího znaku před dotazem na základě názvu 3 části tabulky nebo zobrazení. V případě vlastního nebo předávacího dotazu založeného na čtení jsou uživatelé povinni uvozovat názvy sloupců, které by obsahovaly speciální znaky.