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.