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, and 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 gebruikmaken van de ingebouwde mogelijkheden voor het verwerken van gedistribueerde query's en resources elimineren die nodig zijn om de gegevens te transformeren voordat deze 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.
Extraheren, laden en transformeren (ELT)
Extraheren, laden en transformeren (ELT) is een proces waarmee gegevens worden geëxtraheerd uit een bronsysteem, in een datawarehouse worden geladen en vervolgens worden getransformeerd.
De basisstappen voor het implementeren van een PolyBase ELT voor toegewezen SQL-pool zijn:
- Extraheer de brongegevens naar tekstbestanden.
- Plaats de gegevens in Azure Blob Storage of Azure Data Lake Store.
- Bereid de gegevens voor het laden voor.
- Laad de gegevens in faseringstabellen van een toegewezen SQL-pool met behulp van PolyBase.
- De gegevens transformeren.
- Voeg de gegevens in productietabellen in.
Zie PolyBase gebruiken om gegevens uit Azure Blob Storage te laden naar Azure Synapse Analytics voor een zelfstudie over het laden.
Zie het blog Over laadpatronen voor meer informatie.
1. De brongegevens uitpakken 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 met UTF-8 en UTF-16 gecodeerde tekstbestanden met scheidingstekens. PolyBase wordt ook geladen vanuit de Hadoop-bestandsindelingen RC File, ORC en Parquet. PolyBase kan ook gegevens laden uit gecomprimeerde Gzip- en Snappy-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 to Azure Synapse Analytics is als volgt:
Parquet-gegevenstype | SQL-gegevenstype |
---|---|
tinyint | tinyint |
smallint | smallint |
int | int |
bigint | bigint |
booleaans | bit |
double | float |
float | werkelijk |
double | money |
double | smallmoney |
tekenreeks | nchar |
tekenreeks | nvarchar |
tekenreeks | char |
tekenreeks | varchar |
binair | binair |
binair | varbinary |
tijdstempel | datum |
tijdstempel | smalldatetime |
tijdstempel | datetime2 |
tijdstempel | datum/tijd |
tijdstempel | tijd |
datum | date |
decimal | decimal |
2. Plaats de gegevens in Azure Blob Storage of Azure Data Lake Store
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 te verplaatsen naar Azure Storage:
- De Azure ExpressRoute-service verbetert de doorvoer, prestaties en voorspelbaarheid van het netwerk. ExpressRoute is een service waarmee uw gegevens worden gerouteerd via een toegewezen privéverbinding met Azure. ExpressRoute-verbindingen routeren geen gegevens via het openbare internet. De verbindingen bieden meer betrouwbaarheid, hogere snelheden, lagere latenties en hogere beveiliging dan gewone verbindingen via het openbare internet.
- 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 deze 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. Zie Gegevens laden in een toegewezen SQL-pool als u Data Factory wilt gebruiken met 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, wanneer u de gegevens exporteert naar tekstbestanden of nadat de gegevens zich in Azure Storage bevinden. Het is het eenvoudigst om zo vroeg mogelijk in het proces met de gegevens te werken.
Externe tabellen definiëren
Voordat u gegevens kunt laden, moet u externe tabellen in uw datawarehouse definiëren. 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 zijn 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 uit te lijnen met de kolomdefinities voor de tabel waarin u de gegevens wilt laden.
- Maak gegevens in het tekstbestand op om uit te lijnen 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 worden geweigerd tijdens het laden.
- Scheid velden in het tekstbestand met een eindteken. Zorg ervoor dat u een teken of een tekenreeks gebruikt die niet in uw brongegevens is gevonden. Gebruik de afsluiter die u hebt opgegeven met CREATE EXTERNAL FILE FORMAT.
4. Laad de gegevens in faseringstabellen van een toegewezen SQL-pool met polybase
Het is een best practice 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 gedistribueerde queryverwerkingsmogelijkheden van de SQL-pool 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:
- 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 wanneer u brontabellen toe wijst aan doeltabellen. Als u het laden van T-SQL wilt organiseren, kunt u Azure Data Factory, SSIS of Azure-functies gebruiken.
- PolyBase met SSIS werkt goed wanneer uw brongegevens zich in SQL Server. SSIS definieert de toewijzingen van bron-naar-doeltabellen en organiseert ook de belasting. Als u al SSIS-pakketten hebt, kunt u de pakketten aanpassen om te werken met de nieuwe datawarehouse-bestemming.
- PolyBase met Azure Data Factory (ADF) is een ander indelingsprogramma. Het definieert een pijplijn en plant taken.
- PolyBase met Azure Databricks draagt gegevens over van een Azure Synapse Analytics-tabel naar een Databricks-gegevensframe en/of schrijft gegevens uit een Databricks-dataframe naar een Azure Synapse Analytics-tabel met behulp van PolyBase.
Laadopties zonder PolyBase
Als uw gegevens niet compatibel zijn met PolyBase, kunt u bcp of de SQLBulkCopy-API gebruiken. BCP wordt rechtstreeks in een toegewezen SQL-pool geladen zonder azure Blob Storage te doorlopen en is alleen bedoeld voor kleine belastingen. De laadprestaties van deze opties zijn langzamer dan die van PolyBase.
5. De gegevens transformeren
Terwijl de gegevens zich in de faseringstabel bevinden, moet u transformaties uitvoeren die voor uw workload nodig zijn. Verplaats de gegevens vervolgens naar een productietabel.
6. De gegevens invoegen in productietabellen
De INSERT INTO ... De select-instructie verplaatst de gegevens van de faseringstabel naar de permanente tabel.
Wanneer u een ETL-proces ontwerpt, voert u het proces uit op een klein testvoorbeeld. Probeer 1000 rijen uit de tabel te extraheren naar een bestand, verplaats het naar Azure en probeer het vervolgens in een faseringstabel te laden.
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 hulp bij het laden.