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í proces extrakce, transformace a načítání (ETL) pro načítání dat. Synapse SQL v rámci Azure Synapse Analytics využívá architekturu distribuovaného zpracování dotazů, která využívá škálovatelnost a flexibilitu výpočetních a úložných prostředků.

Použití procesu extrakce, načítání a transformace (ELT) používá integrované funkce pro zpracování distribuovaných dotazů a eliminuje prostředky potřebné pro transformaci dat před načtením.

I když vyhrazené fondy SQL podporují mnoho metod načítání, včetně oblíbených možností SQL Serveru, jako jsou bcp a rozhraní SQLBulkCopy API, nejrychlejší a nejš š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 co největší flexibilitu při načítání doporučujeme použít příkaz COPY.

Co je ELT?

Extrakce, načtení a transformace (ELT) 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:

  1. Extrakce zdrojových dat do textových souborů
  2. Přisadíte data do úložiště objektů blob v Azure nebo do 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 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ů s oddělovači nebo do souborů CSV.

Podporované formáty souborů

Pomocí PolyBase a příkazu COPY můžete načíst data z UTF-8 a UTF-16 s oddělovači nebo soubory CSV. Kromě textových souborů 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číst data z komprimovaných souborů Gzip a Snappy.

Rozšířené formáty ASCII, formát s pevnou šířkou a vnořené formáty, jako jsou WinZip nebo XML, nejsou podporované. Pokud exportujete z SQL Serveru, můžete data exportovat do textových souborů s oddělovači pomocí nástroje příkazového řádku bcp.

2. Přisadíte data do služby Azure Blob Storage nebo Azure Data Lake Store.

Pokud chcete data přistála ve službě Azure Storage, můžete je přesunout do služby Azure Blob Storage nebo Azure Data Lake Store Gen2. V obou umístěních by data měla být uložena 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 Azure Storage:

  • Služba Azure ExpressRoute vylepšuje propustnost sítě, výkon a předvídatelnost. 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, rychlejší rychlost, nižší latenci a vyšší zabezpečení než typická připojení přes veřejný internet.
  • Nástroj AzCopy přesune data do služby Azure Storage přes veřejný internet. To funguje, pokud jsou velikosti dat menší než 10 TB. Pokud chcete s nástrojem AzCopy pravidelně provádět zatížení, otestujte rychlost sítě, abyste zjistili, jestli je to přijatelné.
  • Azure Data Factory (ADF) má bránu, kterou můžete nainstalovat na místní server. Potom 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 na načtení

Před načtením možná budete muset připravit a vyčistit data v účtu úložiště. Přípravu dat je možné provést, když jsou vaše data ve zdroji, při exportu dat do textových souborů nebo po tom, co jsou data ve službě Azure Storage. Nejsnadnější je pracovat s daty co nejdříve v procesu.

Definování tabulek

Nejprve definujte tabulky, které načítáte do vyhrazeného 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 fondu SQL. PolyBase používá externí tabulky k definování a přístupu k datům ve službě 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.

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

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

Typ Parquet Logický typ Parquet (poznámka) Datový typ SQL
BOOLEOVSKÝ bit
BINÁRNÍ / BYTE_ARRAY varbinary
DVOJITÝ float
PLOUT reálný
INT32 int
INT64 bigint
INT96 datetime2
FIXED_LEN_BYTE_ARRAY binární
BINÁRNÍ UTF8 nvarchar
BINÁRNÍ STRING nvarchar
BINÁRNÍ ENUM nvarchar
BINÁRNÍ UUID uniqueidentifier
BINÁRNÍ DECIMAL decimal
BINÁRNÍ JSON nvarchar(MAX)
BINÁRNÍ BSON varbinary(MAX)
FIXED_LEN_BYTE_ARRAY DECIMAL 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 rande
INT32 DECIMAL decimal
INT32 TIME (MILLIS) Čas
INT64 INT(64, true) bigint
INT64 INT(64, false ) decimal(20;0)
INT64 DECIMAL decimal
INT64 TIME (MILLIS) Čas
INT64 TIMESTAMP (MILLIS) datetime2
Komplexní typ LIST varchar(max)
Komplexní typ MAP varchar(max)

Důležité

  • Vyhrazené fondy SQL v současné době nepodporují datové typy Parquet s přesností MICROS a NANOS.
  • Pokud se typy neshodují mezi Parquet a SQL nebo pokud máte nepodporované datové typy Parquet, může dojít k následující chybě: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:...
  • Načtení hodnoty mimo rozsah 0–127 do malého sloupce 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í externí objekty definované zarovnat řádky textových souborů s externí tabulkou a definicí 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. Ať už data pocházejí z relačního nebo nerelačního zdroje, musí se data transformovat tak, aby odpovídala definicům sloupců pro tabulku, do které chcete 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. Nesprávné zarovnání mezi datovými typy v externích textových souborech a tabulkou vyhrazeného 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á není ve zdrojových datech nalezena. Použijte ukončovací znak, který jste zadali ve formátu CREATE EXTERNAL FILE.

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é umožňuje použít vyhrazenou architekturu paralelního zpracování fondu SQL 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 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 pružně načítat data. Příkaz má mnoho dalších možností načítání, které PolyBase neposkytuje. Podívejte se na kurz COPY taxislužby NY, který vás provede ukázkovým kurzem.
  • PolyBase s T-SQL vyžaduje, abyste definovali externí datové objekty.
  • Příkaz PolyBase a COPY se službou Azure Data Factory (ADF) je dalším nástrojem pro orchestraci. Definuje kanál a plánuje úlohy.
  • PolyBase s SSIS funguje dobře, když jsou zdrojová data na SQL Serveru. Služba SSIS definuje zdrojové mapování cílových tabulek a také orchestruje zatížení. Pokud už máte balíčky SSIS, můžete balíčky upravit tak, aby fungovaly s novým cílem datového skladu.
  • PolyBase s 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.

Projděte si dostupné kurzy:

Další možnosti načítání

Kromě PolyBase a příkazu COPY můžete použít bcp nebo rozhraní SQLBulkCopy API. Nástroj bcp se načte přímo do databáze bez průchodu službou Azure Blob Storage a je určen pouze pro malé načtení.

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. Pak přesuňte data do produkční tabulky.

6. Vložte data do produkčních tabulek.

INSERT INTO ... Příkaz SELECT přesune data z pracovní tabulky do trvalé tabulky.

Při návrhu procesu ETL zkuste proces spustit na malé testovací ukázce. Zkuste extrahovat 1 000 řádků z tabulky do souboru, přesunout ho do Azure a pak ho zkuste načíst do pracovní tabulky.

Partner načítá řešení

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

Další krok