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 massiv parallell bearbetning (MPP) som drar nytta av skalbarhet och flexibilitet för 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.
Sql-poolen stöder många inläsningsmetoder, inklusive alternativ som inte är polybaser, till exempel BCP och SQL BulkCopy API, men det snabbaste och mest skalbara sättet att läsa in data är 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.
Extrahera, läsa in och transformera (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 dedikerad SQL-pool är:
- Extrahera källdata till textfiler.
- Landa data i Azure Blob Storage eller Azure Data Lake Store.
- Förbered data för inläsning.
- Läs in data i dedikerade SQL-poollagringstabeller med PolyBase.
- Transformera data.
- Infoga data i produktionstabeller.
En inläsningsguide 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 läsa in mönster blogg.
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äses 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 kommandoradsverktyget bcp för att exportera data till avgränsade textfiler. Mappningen parquet till Azure Synapse Analytics-datatyp är följande:
Parquet-datatyp | SQL-datatyp |
---|---|
tinyint | tinyint |
smallint | smallint |
heltal | heltal |
bigint | bigint |
boolean | bit |
dubbel | flyttal |
flyttal | real |
dubbel | money |
dubbel | 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 någon av 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å din lokala server. Sedan kan du skapa en pipeline för att flytta data från din lokala server upp till Azure Storage. Information om hur du använder Data Factory med dedikerad SQL-pool finns i Läsa in data i en dedikerad SQL-pool.
3. Förbereda 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. Dataförberedelser kan utföras när dina data finns i källan, när du exporterar data till textfiler eller efter att data finns i Azure Storage. Det är enklast att arbeta med data så tidigt som möjligt i processen.
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 relationskälla eller en icke-relationell källa måste data transformeras så att de överensstämmer 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-poolmåltabellen. Feljustering mellan datatyper i de externa textfilerna och informationslagertabellen gör att rader avvisas under inläsningen.
- Avgränsa fält 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 (SKAPA EXTERNT FILFORMAT).
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-pooler 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:
- Läsa in externa data med Microsoft Entra-ID
- Läsa in externa data med hjälp av en hanterad identitet
- 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 dirigerar även belastningen. Om du redan har SSIS-paket kan du ändra paketen så att de fungerar med det nya informationslagrets mål.
- 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 som inte är 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 belastningsprestandan för dessa alternativ är långsammare än PolyBase.
5. Transformera data
Medan 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 försök sedan 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
Information om inläsning finns i Vägledning för inläsningsdata.