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.
Konektor Spark pro Fabric Data Warehouse umožňuje vývojářům Spark a datovým vědcům přístup k datům a práci s daty ze skladu a SQL analytického koncového bodu lakehouse. 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.
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.
Poznámka:
Konektor Spark pro Fabric Data Warehouse podporuje pouze interaktivní ověřování uživatelů Microsoft Entra. Ověřování instančního objektu se nepodporuje.
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í signatury 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 SQL analytického koncového bodu lakehouse. 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:
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 lakehouse v rámci pracovních prostorů, můžete zadat ID pracovního prostoru, ve kterém existuje sklad nebo lakehouse, a poté 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>")
Zápis dat datového rámce Sparku do tabulky v datovém skladu
Tento konektor využívá dvoufázový proces zápisu do tabulky Dw Fabric. Zpočátku připraví data datového rámce Sparku do zprostředkujícího úložiště a poté pomocí příkazu COPY INTO ingestuje data do tabulky Fabric DW. Tento přístup zajišťuje škálovatelnost s rostoucím objemem dat.
Podporované režimy ukládání datového rámce
Při zápisu zdrojových dat datového rámce do cílové tabulky ve skladu se podporují následující režimy ukládání:
- ErrorIfExists (výchozí režim ukládání): Pokud cílová tabulka existuje, zápis se přeruší a vyvolá se výjimka, která je vrácena volajícímu. Jinak se vytvoří nová tabulka s daty.
- Ignorujte: Pokud cílová tabulka existuje, pak zápisová operace požadavek ignoruje, aniž by byla vrácena chyba. Jinak se vytvoří nová tabulka s daty.
- Přepsání: Pokud cílová tabulka existuje, nahradí se stávající data v cíli daty. Jinak se vytvoří nová tabulka s daty.
- Připojení: Pokud cílová tabulka existuje, připojí se k ní nová data. Jinak se vytvoří nová tabulka s daty.
Následující kód ukazuje příklady zápisu dat datového rámce Sparku do tabulky Dw Fabric:
df.write.synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>") # this uses default mode - errorifexists
df.write.mode("errorifexists").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("ignore").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("append").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("overwrite").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
Poznámka:
Konektor podporuje zápis do tabulky Fabric DW pouze proto, že je koncový bod pro analýzu SQL lakehouse pouze pro čtení.
Odstraňování potíží
Po dokončení se úryvek odpovědi po přečtení zobrazí ve výstupu buňky. Selhání v aktuální buňce také způsobí, že se neuskuteční následné spuštění buněk poznámkového bloku. Podrobné informace o chybách jsou k dispozici v protokolech aplikace Spark.
Důležité informace o používání tohoto konektoru
V současné době konektor:
- Podporuje načítání nebo čtení dat z úložišť Fabric a koncových bodů SQL analýzy prvků lakehouse.
- Podporuje zápis dat do tabulky skladu pomocí různých režimů ukládání – tato možnost je dostupná pouze s nejnovějším modulem runtime GA, tj. modulem Runtime 1.3.
- Operace
Private Linkzápisu na úrovni tenanta není podporována a jePrivate Linkpovolená na úrovni pracovního prostoru, operace čtení i zápisu se nepodporují. - Služba Fabric DW teď podporuje
Time Travel, tento konektor ale nefunguje u dotazů se syntaxí časového cestování. - 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 budou zpracovány přidáním únikového znaku před odesláním dotazu na základě názvu z třídílné struktury tabulky nebo zobrazení. V případě vlastního nebo předávacího dotazu pro čtení jsou uživatelé povinni uvozovat názvy sloupců, které by obsahovaly speciální znaky.