Dela via


Utforma en PolyBase-datainläsningsstrategi för dedikerad SQL-pool i Azure Synapse Analytics

Traditionella SMP-informationslager använder en ETL-process (Extract, Transform, and Load) för inläsning av data. Azure SQL pool är en arkitektur för massivt parallell bearbetning (MPP) som utnyttjar skalbarheten och flexibiliteten hos beräknings- och lagringsresurser. En ELT-process (Extract, Load, and Transform) kan dra nytta av inbyggda funktioner för distribuerad frågebearbetning och eliminera resurser som behövs för att transformera data innan de läses in.

Även om SQL-poolen stöder många inläsningsmetoder, inklusive alternativ som inte är polybaser, till exempel BCP och SQL BulkCopy API, är det snabbaste och mest skalbara sättet att läsa in data via PolyBase. PolyBase är en teknik som har åtkomst till externa data som lagras i Azure Blob Storage eller Azure Data Lake Store via T-SQL-språket.

Extrahering, inläsning och transformering (ELT)

Extrahering, inläsning och transformering (ELT) är en process genom vilken data extraheras från ett källsystem, läses in i ett informationslager och sedan transformeras.

De grundläggande stegen för att implementera en PolyBase ELT för en dedikerad SQL-pool är:

  1. Extrahera källdata till textfiler.
  2. Landa data i Azure Blob Storage eller Azure Data Lake Store.
  3. Förbered data för inläsning.
  4. Läs in data i dedikerade SQL-poollagringstabeller med PolyBase.
  5. Transformera data.
  6. Infoga data i produktionstabeller.

En självstudiekurs om inläsning finns i Använda PolyBase för att läsa in data från Azure Blob Storage till Azure Synapse Analytics.

Mer information finns i bloggen Loading patterns (Läsa in mönster).

1. Extrahera källdata i textfiler

Hur du hämtar data från källsystemet beror på lagringsplatsen. Målet är att flytta data till avgränsade textfiler som stöds av PolyBase.

Externa PolyBase-filformat

PolyBase läser in data från UTF-8- och UTF-16-kodade avgränsade textfiler. PolyBase läser också in från Hadoop-filformaten RC File, ORC och Parquet. PolyBase kan också läsa in data från Gzip- och Snappy-komprimerade filer. PolyBase stöder för närvarande inte utökade ASCII-format, format med fast bredd och kapslade format som WinZip, JSON och XML.

Om du exporterar från SQL Server kan du använda bcp-kommandoradsverktyget för att exportera data till avgränsade textfiler. Mappningen Parquet to Azure Synapse Analytics-datatyp är följande:

Parquet-datatyp SQL-datatyp
tinyint tinyint
smallint smallint
int int
bigint bigint
boolean bit
double flyt
flyt real
double money
double smallmoney
sträng nchar
sträng nvarchar
sträng char
sträng varchar
binary binary
binary varbinary
timestamp datum
timestamp smalldatetime
timestamp datetime2
timestamp datetime
timestamp time
datum datum
decimal decimal

2. Landa data i Azure Blob Storage eller Azure Data Lake Store

Om du vill landa data i Azure Storage kan du flytta dem till Azure Blob Storage eller Azure Data Lake Store. På båda platserna ska data lagras i textfiler. PolyBase kan läsas in från båda platserna.

Verktyg och tjänster som du kan använda för att flytta data till Azure Storage:

  • Azure ExpressRoute-tjänsten förbättrar nätverkets dataflöde, prestanda och förutsägbarhet. ExpressRoute är en tjänst som dirigerar dina data via en dedikerad privat anslutning till Azure. ExpressRoute-anslutningar dirigerar inte data via det offentliga Internet. Anslutningarna ger mer tillförlitlighet, snabbare hastigheter, kortare svarstider och högre säkerhet än vanliga anslutningar via det offentliga Internet.
  • AzCopy-verktyget flyttar data till Azure Storage via det offentliga Internet. Detta fungerar om dina datastorlekar är mindre än 10 TB. Om du vill utföra belastningar regelbundet med AzCopy testar du nätverkshastigheten för att se om det är acceptabelt.
  • Azure Data Factory (ADF) har en gateway som du kan installera på den lokala servern. Sedan kan du skapa en pipeline för att flytta data från din lokala server till Azure Storage. Information om hur du använder Data Factory med en dedikerad SQL-pool finns i Läsa in data i en dedikerad SQL-pool.

3. Förbered data för inläsning

Du kan behöva förbereda och rensa data i ditt lagringskonto innan du läser in dem i en dedikerad SQL-pool. Förberedelse av data kan utföras när dina data finns i källan, när du exporterar data till textfiler eller när data finns i Azure Storage. Det är enklast att arbeta med data så tidigt i processen som möjligt.

Definiera externa tabeller

Innan du kan läsa in data måste du definiera externa tabeller i informationslagret. PolyBase använder externa tabeller för att definiera och komma åt data i Azure Storage. En extern tabell liknar en databasvy. Den externa tabellen innehåller tabellschemat och pekar på data som lagras utanför informationslagret.

Att definiera externa tabeller innebär att ange datakällan, formatet på textfilerna och tabelldefinitionerna. Följande är de T-SQL-syntaxämnen som du behöver:

Formatera textfiler

När de externa objekten har definierats måste du justera raderna i textfilerna med definitionen för extern tabell och filformat. Data på varje rad i textfilen måste överensstämma med tabelldefinitionen. Så här formaterar du textfilerna:

  • Om dina data kommer från en icke-relationell källa måste du omvandla dem till rader och kolumner. Oavsett om data kommer från en relationsbaserad eller icke-relationell källa måste data omvandlas för att överensstämma med kolumndefinitionerna för den tabell som du planerar att läsa in data i.
  • Formatera data i textfilen så att de överensstämmer med kolumnerna och datatyperna i SQL-poolens måltabell. Feljustering mellan datatyperna i de externa textfilerna och informationslagertabellen gör att rader avvisas under inläsningen.
  • Avgränsa fälten i textfilen med en avslutare. Se till att använda ett tecken eller en teckensekvens som inte finns i dina källdata. Använd den avslutare som du angav med CREATE EXTERNAL FILE FORMAT.

4. Läs in data i dedikerade SQL-pool mellanlagringstabeller med PolyBase

Det är bästa praxis att läsa in data i en mellanlagringstabell. Med mellanlagringstabeller kan du hantera fel utan att störa produktionstabellerna. En mellanlagringstabell ger dig också möjlighet att använda inbyggda funktioner för distribuerad frågebearbetning i SQL-poolen för datatransformeringar innan du infogar data i produktionstabeller.

Alternativ för inläsning med PolyBase

Om du vill läsa in data med PolyBase kan du använda något av följande inläsningsalternativ:

  • PolyBase med T-SQL fungerar bra när dina data finns i Azure Blob Storage eller Azure Data Lake Store. Det ger dig mest kontroll över inläsningsprocessen, men kräver också att du definierar externa dataobjekt. De andra metoderna definierar dessa objekt i bakgrunden när du mappar källtabeller till måltabeller. Om du vill samordna T-SQL-inläsningar kan du använda Azure Data Factory,SSIS- eller Azure-funktioner.
  • PolyBase med SSIS fungerar bra när dina källdata finns i SQL Server. SSIS definierar käll-till-måltabellmappningar och orkestrerar även belastningen. Om du redan har SSIS-paket kan du ändra paketen så att de fungerar med det nya informationslagermålet.
  • PolyBase med Azure Data Factory (ADF) är ett annat orkestreringsverktyg. Den definierar en pipeline och schemalägger jobb.
  • PolyBase med Azure Databricks överför data från en Azure Synapse Analytics-tabell till en Databricks-dataram och/eller skriver data från en Databricks-dataram till en Azure Synapse Analytics-tabell med PolyBase.

Inläsningsalternativ för icke-PolyBase

Om dina data inte är kompatibla med PolyBase kan du använda bcp eller SQLBulkCopy-API:et. BCP läses in direkt till en dedikerad SQL-pool utan att gå via Azure Blob Storage och är endast avsedd för små belastningar. Observera att inläsningsprestandan för dessa alternativ är långsammare än PolyBase.

5. Transformera data

När data finns i mellanlagringstabellen utför du transformeringar som din arbetsbelastning kräver. Flytta sedan data till en produktionstabell.

6. Infoga data i produktionstabeller

INFOGA I ... SELECT-instruktionen flyttar data från mellanlagringstabellen till den permanenta tabellen.

När du utformar en ETL-process kan du prova att köra processen i ett litet testexempel. Prova att extrahera 1 000 rader från tabellen till en fil, flytta den till Azure och prova sedan att läsa in den i en mellanlagringstabell.

Partnerinläsningslösningar

Många av våra partners har inläsningslösningar. Mer information finns i en lista över våra lösningspartners.

Nästa steg

Vägledning för inläsning finns i Vägledning för inläsning av data.