Strategie načítání dat pro vyhrazený fond SQL ve službě Azure Synapse Analytics
Tradiční vyhrazené fondy SQL SMP používají k načítání dat proces extrakce, transformace a načítání (ETL). Synapse SQL v Azure Synapse Analytics využívá architekturu distribuovaného zpracování dotazů, která využívá škálovatelnost a flexibilitu výpočetních prostředků a prostředků úložiště.
Proces extrakce, načítání a transformace (ELT) využívá integrované možnosti zpracování distribuovaných dotazů a eliminuje prostředky potřebné pro transformaci dat před načtením.
Zatímco vyhrazené fondy SQL podporují mnoho metod načítání, včetně oblíbených možností SQL Server, jako je bcp a rozhraní SQLBulkCopy API,nejrychlejší a nejšiřatelnější způsob načítání dat je prostřednictvím externích tabulek PolyBase a příkazu COPY.
Pomocí PolyBase a příkazu COPY můžete přistupovat k externím datům uloženým v úložišti objektů blob v Azure nebo Data Lake Store azure prostřednictvím jazyka T-SQL. Pro maximální flexibilitu při načítání doporučujeme použít příkaz COPY.
Co je ELT?
ELT (Extract, Load, and Transform) je proces, pomocí kterého se data extrahují ze zdrojového systému, načtou se do vyhrazeného fondu SQL a pak se transformují.
Základní kroky pro implementaci ELT jsou následující:
- Extrakce zdrojových dat do textových souborů
- Přeložte data do azure blob storage nebo Azure Data Lake Store.
- Připravte data pro načtení.
- Načtěte data do pracovních tabulek pomocí PolyBase nebo příkazu COPY.
- Transformujte data.
- Vložení dat do produkčních tabulek
Kurz načítání najdete v tématu načítání dat z úložiště objektů blob v Azure.
1. Extrahování zdrojových dat do textových souborů
Získávání dat ze zdrojového systému závisí na umístění úložiště. Cílem je přesunout data do podporovaných textových souborů nebo souborů CSV s oddělovači.
Podporované formáty souborů
Pomocí PolyBase a příkazu COPY můžete načíst data z textu nebo souborů CSV s oddělovači v kódování UTF-8 a UTF-16. Kromě textových souborů nebo souborů CSV s oddělovači se načítá z formátů souborů Hadoop, jako jsou ORC a Parquet. PolyBase a příkaz COPY mohou také načítat data z komprimovaných souborů Gzip a Snappy.
Rozšířené formáty ASCII, formát s pevnou šířkou a vnořené formáty, jako je WinZip nebo XML, se nepodporují. Pokud exportujete z SQL Server, můžete data exportovat do textových souborů s oddělovači pomocí nástroje příkazového řádku bcp.
2. Umístění dat do azure blob storage nebo Azure Data Lake Store
Pokud chcete získat data v úložišti Azure, můžete je přesunout do úložiště objektů blob v Azure nebo do azure Data Lake Store Gen2. V obou umístěních by se data měla ukládat do textových souborů. PolyBase a příkaz COPY lze načíst z obou umístění.
Nástroje a služby, které můžete použít k přesunu dat do Azure Storage:
- Azure ExpressRoute service zvyšuje propustnost, výkon a předvídatelnost sítě. ExpressRoute je služba, která směruje vaše data přes vyhrazené privátní připojení do Azure. Připojení ExpressRoute nesměrují data přes veřejný internet. Připojení nabízejí větší spolehlivost, vyšší rychlost, nižší latenci a vyšší zabezpečení než typická připojení přes veřejný internet.
- Nástroj AzCopy přesouvá data Azure Storage přes veřejný internet. To funguje, pokud jsou vaše velikosti dat menší než 10 TB. Pokud chcete provádět zatížení pravidelně pomocí nástroje AzCopy, otestujte rychlost sítě a podívejte se, jestli je to přijatelné.
- Azure Data Factory (ADF) má bránu, kterou můžete nainstalovat na místní server. Pak můžete vytvořit kanál pro přesun dat z místního serveru do Azure Storage. Informace o Data Factory s vyhrazeným SQL fondy najdete v tématu Načítání dat pro vyhrazené SQL fondy.
3. Příprava dat pro načtení
Možná budete muset před načtením připravit a vyčistit data v účtu úložiště. Přípravu dat je možné provést, když jsou data ve zdroji, při exportu dat do textových souborů nebo po jejich Azure Storage. Nejjednodušší je pracovat s daty co nejdříve v procesu.
Definování tabulek
Tabulky, do které načítáte, musíte nejprve definovat ve vyhrazeném fondu SQL při použití příkazu COPY.
Pokud používáte PolyBase, musíte před načtením definovat externí tabulky ve vyhrazeném SQL fondu. PolyBase používá externí tabulky k definování a přístupu k datům v Azure Storage. Externí tabulka je podobná zobrazení databáze. Externí tabulka obsahuje schéma tabulky a odkazuje na data uložená mimo vyhrazený fond SQL dat.
Definování externích tabulek zahrnuje určení zdroje dat, formátu textových souborů a definic tabulek. Referenční články SQL syntaxe jazyka T-SQL, které budete potřebovat:
Při načítání souborů Parquet SQL použijte následující mapování datových typů:
| Typ Parquet | Logický typ Parquet (anotace) | SQL datový typ |
|---|---|---|
| BOOLEAN | bit | |
| BINÁRNÍ / BYTE_ARRAY | Varbinary | |
| DVOJITÉ | float | |
| FLOAT | real | |
| INT32 | int | |
| INT64 | bigint | |
| INT96 | datetime2 | |
| FIXED_LEN_BYTE_ARRAY | binární | |
| BINÁRNÍ | UTF8 | nvarchar |
| BINÁRNÍ | ŘETĚZEC | nvarchar |
| BINÁRNÍ | VÝČTU | nvarchar |
| BINÁRNÍ | UUID | uniqueidentifier |
| BINÁRNÍ | DESETINNÝCH | decimal |
| BINÁRNÍ | JSON | nvarchar(MAX) |
| BINÁRNÍ | BSON | Varbinary(max) |
| FIXED_LEN_BYTE_ARRAY | DESETINNÝCH | decimal |
| BYTE_ARRAY | INTERVAL | Varchar(max) |
| INT32 | INT(8; true) | smallint |
| INT32 | INT(16; true) | smallint |
| INT32 | INT(32; true) | int |
| INT32 | INT(8; false) | tinyint |
| INT32 | INT(16; false) | int |
| INT32 | INT(32; false) | bigint |
| INT32 | DATE | date |
| INT32 | DESETINNÝCH | decimal |
| INT32 | TIME (MILLIS) | time |
| INT64 | INT(64; true) | bigint |
| INT64 | INT(64; false ) | decimal(20;0) |
| INT64 | DESETINNÝCH | decimal |
| INT64 | TIME (MILLIS) | time |
| INT64 | ČASOVÉ RAZÍTKO (MILIS) | datetime2 |
| Komplexní typ | SEZNAMU | varchar(max) |
| Komplexní typ | MAPU | varchar(max) |
Důležité
- SQL fondy v současné době nepodporují datové typy Parquet s přesností na MICROS a NANOS.
- K následující chybě může dojít v případě neshod typů mezi formáty Parquet a SQL nebo pokud máte nepodporované datové typy Parquet: HdfsBridge::recordReaderFillBuffer – Při vyplňování vyrovnávací paměti čtečky záznamů došlo k neočekávané chybě: ClassCastException: ...
- Načtení hodnoty mimo rozsah 0 až 127 do sloupce tinyint pro formát souborů Parquet a ORC se nepodporuje.
Příklad vytváření externích objektů najdete v tématu Vytvoření externích tabulek.
Formátování textových souborů
Pokud používáte PolyBase, musí definované externí objekty zarovnat řádky textových souborů s definicí formátu externí tabulky a souboru. Data v každém řádku textového souboru musí být zarovnána s definicí tabulky. Formátování textových souborů:
- Pokud data pochází z nerelačního zdroje, musíte je transformovat na řádky a sloupce. Bez ohledu na to, jestli data pochází z relačního nebo nerelačního zdroje, je nutné je transformovat, aby byla v souladu s definicemi sloupců tabulky, do které plánujete data načíst.
- Naformátovat data v textovém souboru tak, aby byla zarovnána se sloupci a datovými typy v cílové tabulce. Nesoulad mezi datovými typy v externích textových souborech a vyhrazenou tabulkou SQL způsobí odmítnutí řádků během načítání.
- Pole v textovém souboru oddělte ukončovacím znakem. Nezapomeňte použít znak nebo sekvenci znaků, které se ve zdrojových datech nenašly. Použijte ukončovací znak, který jste zadali ve formátu CREATE EXTERNAL FILE FORMAT.
4. Načtení dat pomocí PolyBase nebo příkazu COPY
Osvědčeným postupem je načíst data do pracovní tabulky. Pracovní tabulky umožňují zpracovávat chyby bez toho, aby zasahovala do produkčních tabulek. Pracovní tabulka také poskytuje příležitost použít vyhrazenou architekturu paralelního zpracování SQL fondu pro transformace dat před vložením dat do produkčních tabulek.
Možnosti načítání
K načtení dat můžete použít libovolnou z těchto možností načítání:
- Příkaz COPY je doporučený nástroj pro načítání, protože umožňuje bezproblémově a flexibilně načítat data. Příkaz má mnoho dalších možností načítání, které PolyBase neposkytuje. Pokud si chcete projít ukázkový kurz, podívejte se na kurz NEW TAXI CAB COPY.
- PolyBase s T-SQL vyžaduje definování externích datových objektů.
- PolyBase a příkaz COPY s Azure Data Factory (ADF) je další nástroj pro orchestraci. Definuje kanál a naplánuje úlohy.
- PolyBase se SSIS dobře funguje, když jsou zdrojová data SQL Server. SSIS definuje mapování zdrojových a cílových tabulek a také orchestruje zatížení. Pokud už máte balíčky SSIS, můžete je upravit tak, aby fungovaly s novým cílem datového skladu.
- PolyBase s Azure Databricks data z tabulky do datového rámce Databricks nebo zapisuje data z datového rámce Databricks do tabulky pomocí PolyBase.
Další možnosti načítání
Kromě PolyBase a příkazu COPY můžete použít nástroj bcp nebo rozhraní SQLBulkCopy API. Nástroj bcp se načte přímo do databáze, aniž by prošel úložištěm objektů blob v Azure, a je určený pouze pro malá zatížení.
Poznámka
Výkon načítání těchto možností je pomalejší než PolyBase a příkaz COPY.
5. Transformace dat
Zatímco jsou data v pracovní tabulce, proveďte transformace, které vaše úloha vyžaduje. Potom přesuňte data do produkční tabulky.
6. Vložení dat do produkčních tabulek
Příkaz INSERT INTO... Příkaz SELECT přesune data z pracovní tabulky do trvalé tabulky.
Při návrhu procesu ETL zkuste proces spuštění na malé testovací ukázce. Zkuste z tabulky do souboru extrahovat 1 000 řádků, přesunout ho do Azure a pak ho nahánět do pracovní tabulky.
Partnerská řešení načítání
Řada našich partnerů má načítá řešení. Další informace najdete v seznamu našich partnerů řešení.
Další kroky
Pokyny k načítání najdete v tématu Osvědčené postupy načítání dat.