Een PolyBase-strategie voor het laden van gegevens ontwerpen voor toegewezen SQL-pool in Azure Synapse Analytics
Traditionele SMP-datawarehouses gebruiken een ETL-proces (Extract, Transform en Load) voor het laden van gegevens. Azure SQL-pool is een MPP-architectuur (Massively Parallel Processing) die profiteert van de schaalbaarheid en flexibiliteit van reken- en opslagresources. Een ELT-proces (Extraheren, Laden en Transformeren) kan profiteren van ingebouwde mogelijkheden voor verwerking van gedistribueerde query's en resources elimineren die nodig zijn om de gegevens te transformeren voordat ze worden geladen.
Hoewel SQL-pool veel laadmethoden ondersteunt, waaronder niet-Polybase-opties zoals BCP en SQL BulkCopy-API, is de snelste en meest schaalbare manier om gegevens te laden via PolyBase. PolyBase is een technologie die toegang heeft tot externe gegevens die zijn opgeslagen in Azure Blob Storage of Azure Data Lake Store via de T-SQL-taal.
Uitpakken, laden en transformeren (ELT)
ELT (Extract, Load, and Transform) is een proces waarmee gegevens worden geëxtraheerd uit een bronsysteem, geladen in een datawarehouse en vervolgens worden getransformeerd.
De basisstappen voor het implementeren van een PolyBase ELT voor een toegewezen SQL-pool zijn:
- Extraheer de brongegevens naar tekstbestanden.
- Land de gegevens in Azure Blob Storage of Azure Data Lake Store.
- Bereid de gegevens voor voor het laden.
- Laad de gegevens in faseringstabellen van toegewezen SQL-pools met behulp van PolyBase.
- De gegevens transformeren.
- Voeg de gegevens in productietabellen in.
Zie PolyBase gebruiken voor het laden van gegevens uit Azure Blob Storage naar Azure Synapse Analytics voor een zelfstudie over laden.
Zie het blog Laadpatronen voor meer informatie.
1. Pak de brongegevens uit in tekstbestanden
Het ophalen van gegevens uit uw bronsysteem is afhankelijk van de opslaglocatie. Het doel is om de gegevens te verplaatsen naar door PolyBase ondersteunde tekstbestanden met scheidingstekens.
Externe PolyBase-bestandsindelingen
PolyBase laadt gegevens uit UTF-8- en UTF-16 gecodeerde tekstbestanden met scheidingstekens. PolyBase wordt ook geladen vanuit de Hadoop-bestandsindelingen RC-bestand, ORC en Parquet. PolyBase kan ook gegevens laden uit Gzip- en Snappy-gecomprimeerde bestanden. PolyBase biedt momenteel geen ondersteuning voor uitgebreide ASCII-, indeling met vaste breedte en geneste indelingen zoals WinZip, JSON en XML.
Als u exporteert vanuit SQL Server, kunt u het opdrachtregelprogramma bcp gebruiken om de gegevens te exporteren naar tekstbestanden met scheidingstekens. De toewijzing van het gegevenstype Parquet naar Azure Synapse Analytics is als volgt:
Parquet-gegevenstype | SQL-gegevenstype |
---|---|
tinyint | tinyint |
smallint | smallint |
int | int |
bigint | bigint |
boolean | bit |
dubbel | zwevend |
zwevend | werkelijk |
dubbel | money |
dubbel | smallmoney |
tekenreeks | nchar |
tekenreeks | nvarchar |
tekenreeks | char |
tekenreeks | varchar |
binair | binair |
binair | varbinary |
timestamp | datum |
timestamp | smalldatetime |
timestamp | datetime2 |
timestamp | datetime |
timestamp | tijd |
datum | datum |
decimal | decimal |
2. De gegevens in Azure Blob Storage of Azure Data Lake Store plaatsen
Als u de gegevens in Azure Storage wilt plaatsen, kunt u deze verplaatsen naar Azure Blob Storage of Azure Data Lake Store. Op beide locaties moeten de gegevens worden opgeslagen in tekstbestanden. PolyBase kan vanaf beide locaties worden geladen.
Hulpprogramma's en services die u kunt gebruiken om gegevens naar Azure Storage te verplaatsen:
- De Azure ExpressRoute-service verbetert de netwerkdoorvoer, prestaties en voorspelbaarheid. ExpressRoute is een service waarmee uw gegevens worden gerouteerd via een toegewezen privéverbinding naar Azure. ExpressRoute-verbindingen routeren geen gegevens via het openbare internet. De verbindingen bieden meer betrouwbaarheid, snellere snelheden, lagere latenties en hogere beveiliging dan typische verbindingen via het openbare internet.
- Het AzCopy-hulpprogramma verplaatst gegevens naar Azure Storage via het openbare internet. Dit werkt als uw gegevens kleiner zijn dan 10 TB. Als u regelmatig belasting wilt uitvoeren met AzCopy, test u de netwerksnelheid om te zien of dit acceptabel is.
- Azure Data Factory (ADF) heeft een gateway die u op uw lokale server kunt installeren. Vervolgens kunt u een pijplijn maken om gegevens van uw lokale server naar Azure Storage te verplaatsen. Als u Data Factory wilt gebruiken met een toegewezen SQL-pool, raadpleegt u Gegevens laden in een toegewezen SQL-pool.
3. De gegevens voorbereiden voor het laden
Mogelijk moet u de gegevens in uw opslagaccount voorbereiden en opschonen voordat u deze in een toegewezen SQL-pool laadt. Gegevensvoorbereiding kan worden uitgevoerd terwijl uw gegevens zich in de bron bevinden, terwijl u de gegevens naar tekstbestanden exporteert of nadat de gegevens zich in Azure Storage bevinden. Het is het eenvoudigst om zo vroeg mogelijk met de gegevens te werken.
Externe tabellen definiëren
Voordat u gegevens kunt laden, moet u externe tabellen definiëren in uw datawarehouse. PolyBase maakt gebruik van externe tabellen om de gegevens in Azure Storage te definiëren en te openen. Een externe tabel is vergelijkbaar met een databaseweergave. De externe tabel bevat het tabelschema en verwijst naar gegevens die buiten het datawarehouse worden opgeslagen.
Het definiëren van externe tabellen omvat het opgeven van de gegevensbron, de indeling van de tekstbestanden en de tabeldefinities. Hieronder vindt u de T-SQL-syntaxisonderwerpen die u nodig hebt:
Tekstbestanden opmaken
Zodra de externe objecten zijn gedefinieerd, moet u de rijen van de tekstbestanden uitlijnen met de definitie van de externe tabel en bestandsindeling. De gegevens in elke rij van het tekstbestand moeten worden uitgelijnd met de tabeldefinitie. De tekstbestanden opmaken:
- Als uw gegevens afkomstig zijn van een niet-relationele bron, moet u deze transformeren in rijen en kolommen. Ongeacht of de gegevens afkomstig zijn van een relationele of niet-relationele bron, moeten de gegevens worden getransformeerd om te worden afgestemd op de kolomdefinities voor de tabel waarin u de gegevens wilt laden.
- Gegevens in het tekstbestand opmaken om te worden uitgelijnd met de kolommen en gegevenstypen in de doeltabel van de SQL-pool. Onjuiste uitlijning tussen gegevenstypen in de externe tekstbestanden en de datawarehouse-tabel zorgt ervoor dat rijen tijdens de belasting worden geweigerd.
- Scheid velden in het tekstbestand met een afsluiter. Zorg ervoor dat u een teken of een tekenreeks gebruikt die niet in de brongegevens is gevonden. Gebruik het afsluitprogramma dat u hebt opgegeven met CREATE EXTERNAL FILE FORMAT.
4. Laad de gegevens in toegewezen SQL-pool faseringstabellen met behulp van PolyBase
Het is raadzaam om gegevens in een faseringstabel te laden. Met faseringstabellen kunt u fouten afhandelen zonder de productietabellen te verstoren. Een faseringstabel biedt u ook de mogelijkheid om ingebouwde mogelijkheden voor gedistribueerde queryverwerking van SQL-pools te gebruiken voor gegevenstransformaties voordat u de gegevens in productietabellen invoegt.
Opties voor laden met PolyBase
Als u gegevens wilt laden met PolyBase, kunt u een van deze laadopties gebruiken:
- Externe gegevens laden met behulp van Microsoft Entra-id
- Externe gegevens laden met een beheerde identiteit
- PolyBase met T-SQL werkt goed wanneer uw gegevens zich in Azure Blob Storage of Azure Data Lake Store bevinden. Het biedt u de meeste controle over het laadproces, maar vereist ook dat u externe gegevensobjecten definieert. Met de andere methoden worden deze objecten achter de schermen gedefinieerd terwijl u brontabellen toe wijst aan doeltabellen. Als u T-SQL-belastingen wilt organiseren, kunt u Azure Data Factory, SSIS of Azure-functies gebruiken.
- PolyBase met SSIS werkt goed wanneer uw brongegevens zich in SQL Server bevinden. SSIS definieert de bron-naar-doeltabeltoewijzingen en organiseert ook de belasting. Als u al SSIS-pakketten hebt, kunt u de pakketten wijzigen zodat deze werken met de nieuwe datawarehouse-bestemming.
- PolyBase met Azure Data Factory (ADF) is een ander indelingsprogramma. Hiermee definieert u een pijplijn en plant u taken.
- PolyBase met Azure Databricks draagt gegevens over van een Azure Synapse Analytics-tabel naar een Databricks-dataframe en/of schrijft gegevens van een Databricks-dataframe naar een Azure Synapse Analytics-tabel met behulp van PolyBase.
Laadopties voor niet-PolyBase
Als uw gegevens niet compatibel zijn met PolyBase, kunt u bcp of de SQLBulkCopy-API gebruiken. BCP wordt rechtstreeks geladen naar een toegewezen SQL-pool zonder azure Blob Storage te doorlopen en is alleen bedoeld voor kleine belastingen. Houd er rekening mee dat de belastingsprestaties van deze opties langzamer zijn dan PolyBase.
5. De gegevens transformeren
Terwijl gegevens zich in de faseringstabel bevinden, voert u transformaties uit die uw workload nodig heeft. Verplaats de gegevens vervolgens naar een productietabel.
6. De gegevens invoegen in productietabellen
Insert INTO ... Select-instructie verplaatst de gegevens uit de faseringstabel naar de permanente tabel.
Wanneer u een ETL-proces ontwerpt, voert u het proces uit op een klein testvoorbeeld. Pak 1000 rijen uit de tabel uit naar een bestand, verplaats deze naar Azure en laad deze vervolgens in een faseringstabel.
Oplossingen voor het laden van partners
Veel van onze partners hebben laadoplossingen. Zie een lijst met onze oplossingspartners voor meer informatie.
Volgende stappen
Zie Richtlijnen voor het laden van gegevens voor informatie over het laden.