Sdílet prostřednictvím


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 rámci služby Azure Synapse Analytics použí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ě.

Použití procesu 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 jsou bcp a rozhraní SQLBulkCopy API, nejrychlejší a škálovatelný 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 ve službě Azure Blob Storage nebo Azure Data Lake Store 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?

Extrakce, načtení a transformace (ELT) je proces, kterým se data extrahují ze zdrojového systému, načítají do vyhrazeného fondu SQL a pak transformují.

Základní kroky pro implementaci ELT jsou:

  1. Extrakce zdrojových dat do textových souborů
  2. Přiložte data do služby Azure Blob Storage nebo Azure Data Lake Store.
  3. Připravte data na načtení.
  4. Načtěte data do pracovních tabulek pomocí PolyBase nebo příkazu COPY.
  5. Transformujte data.
  6. Vložení dat do produkčních tabulek

Kurz načítání najdete v tématu načítání dat ze služby Azure Blob Storage.

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ů s oddělovači nebo souborů CSV.

Podporované formáty souborů

Pomocí PolyBase a příkazu COPY můžete načítat data z textu s oddělovači nebo souborů CSV s kódováním UTF-8 a UTF-16. Kromě textu s oddělovači nebo souborů CSV 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 k exportu dat do textových souborů s oddělovači použít nástroj příkazového řádku bcp.

2. Uložte data do služby Azure Blob Storage nebo Azure Data Lake Store.

Pokud chcete data přenést do úložiště Azure, můžete je přesunout do Azure Blob Storage nebo Azure Data Lake Store Gen2. V obou umístěních by data měla být uložená v textových souborech. PolyBase a příkaz COPY se dají načíst z libovolného umístění.

Nástroje a služby, které můžete použít k přesunu dat do Služby Azure Storage:

  • Služba Azure ExpressRoute zvyšuje propustnost, výkon a předvídatelnost sítě. ExpressRoute je služba, která směruje vaše data prostřednictvím vyhrazeného privátního 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 do Služby Azure Storage přes veřejný internet. To funguje v případě, že velikost dat je menší než 10 TB. Pokud chcete provádět zatížení pravidelně pomocí nástroje AzCopy, otestujte rychlost sítě a zjistěte, jestli je 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 Služby Azure Storage. Informace o použití služby Data Factory s vyhrazenými fondy SQL najdete v tématu Načítání dat pro vyhrazené fondy SQL.

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ádět, když jsou data ve zdroji, při exportu dat do textových souborů nebo po uložení dat ve službě Azure Storage. Nejjednodušší je pracovat s daty co nejdříve v procesu.

Definování tabulek

Při použití příkazu COPY musíte nejprve definovat tabulky, do které načítáte, ve vyhrazeném fondu SQL.

Pokud používáte PolyBase, musíte před načtením definovat externí tabulky ve vyhrazeném fondu SQL. PolyBase k definování dat ve službě Azure Storage a přístupu k datům používá externí tabulky. Externí tabulka je podobná zobrazení databáze. Externí tabulka obsahuje schéma tabulky a odkazuje na data, která jsou uložená mimo vyhrazený fond SQL.

Definování externích tabulek zahrnuje zadání zdroje dat, formátu textových souborů a definic tabulek. Budete potřebovat následující články s referenčními informacemi o syntaxi jazyka T-SQL:

Při načítání souborů Parquet použijte následující mapování datových typů SQL:

Typ Parquet Logický typ Parquet (anotace) Datový typ SQL
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, pravda) int
INT32 INT(8; false) tinyint
INT32 INT(16; false) int
INT32 INT(32; false) bigint
INT32 DATE (Datum) date
INT32 DESETINNÝCH decimal
INT32 ČAS (MILIS) time
INT64 INT(64, pravda) bigint
INT64 INT(64; false ) decimal(20,0)
INT64 DESETINNÝCH decimal
INT64 ČAS (MILIS) time
INT64 ČASOVÉ RAZÍTKO (MILIS) datetime2
Komplexní typ SEZNAMU varchar(max)
Komplexní typ MAPU varchar(max)

Důležité

  • Vyhrazené fondy SQL v současné době nepodporují datové typy Parquet s přesností MICROS a NANOS.
  • K následující chybě může dojít, pokud se typy neshodují mezi Parquet a SQL nebo pokud máte nepodporované datové typy Parquet: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:...
  • Načtení hodnoty mimo rozsah 0–127 do sloupce tinyint pro formát souborů Parquet a ORC není podporováno.

Příklad vytváření externích objektů najdete v tématu Vytvář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í externí tabulky a formátu souboru. Data v každém řádku textového souboru musí být zarovnaná s definicí tabulky. Formátování textových souborů:

  • Pokud data pocházejí z nerelačního zdroje, musíte je transformovat na řádky a sloupce. Bez ohledu na to, jestli data pocházejí z relačního nebo nerelačního zdroje, musí být transformována tak, aby byla v souladu s definicemi sloupců pro tabulku, do které plánujete data načíst.
  • Naformátujte data v textovém souboru tak, aby odpovídala sloupcům a datovým typům v cílové tabulce. Neshoda mezi datovými typy v externích textových souborech a vyhrazené tabulce fondu 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 posloupnost znaků, které nejsou ve zdrojových datech. Použijte ukončovací funkci, kterou jste zadali u příkazu CREATE EXTERNAL FILE FORMAT (VYTVOŘIT FORMÁT EXTERNÍHO SOUBORU).

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 zásahu do produkčních tabulek. Přípravná tabulka také nabízí možnost použít pro transformace dat před vložením dat do produkčních tabulek architekturu paralelního zpracování vyhrazeného fondu SQL.

Možnosti pro načtení

K načtení dat můžete použít některou 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. Projděte si kurz COPY taxi taxi NY a projděte si ukázkový kurz.
  • PolyBase s T-SQL vyžaduje, abyste definovali externí datové objekty.
  • PolyBase a PŘÍKAZ COPY s Azure Data Factory (ADF) je další nástroj pro orchestraci. Definuje kanál a plánuje úlohy.
  • PolyBase se službou SSIS funguje dobře, když jsou zdrojová data v SQL Server. Služba SSIS definuje mapování zdrojových a cílových tabulek a také orchestruje zatížení. Pokud už balíčky SSIS máte, můžete je upravit tak, aby fungovaly s novým cílem datového skladu.
  • PolyBase se službou Azure Databricks přenáší 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 bcp nebo rozhraní SQLBulkCopy API. Bcp se načte přímo do databáze bez procházení úložiště 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

Když jsou data v pracovní tabulce, proveďte transformace, které vaše úloha vyžaduje. Pak přesuňte data do produkční tabulky.

6. Vložení dat do produkčních tabulek

Vložit do ... Příkaz SELECT přesune data z pracovní tabulky do trvalé tabulky.

Při návrhu procesu ETL zkuste tento proces spustit na malém testovacím vzorku. Zkuste extrahovat 1000 řádků z tabulky do souboru, přesunout ho do Azure a pak ho zkuste načíst do přípravné tabulky.

Řešení pro načítání partnerů

Mnoho našich partnerů má řešení pro načítání. Další informace najdete v seznamu našich partnerů pro řešení.

Další kroky

Pokyny k načítání najdete v tématu Osvědčené postupy načítání dat.