Delen via


Een PolyBase-strategie voor het laden van gegevens ontwerpen voor een toegewezen SQL-pool

Traditionele SMP-datawarehouses (Symmetric MultiProcessing System) 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 (Extract, Load, and Transform) kan daarentegen profiteren van ingebouwde mogelijkheden voor gedistribueerde queryverwerking 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 het programma voor bulksgewijs kopiëren (bcp) en de 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 Storage via de T-SQL-taal (Transact-SQL).

Polybase ELT implementeren

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:

  1. Pak de brongegevens uit in tekstbestanden.
  2. Land de gegevens in Azure Blob Storage of Azure Data Lake Storage.
  3. Bereid de gegevens voor voor het laden.
  4. Laad de gegevens in faseringstabellen van toegewezen SQL-pools met behulp van PolyBase.
  5. De gegevens transformeren.
  6. Voeg de gegevens in productietabellen in.

Zie De gegevensset Taxicab van New York laden voor een zelfstudie over laden.

Zie Laadpatronen en strategieën voor meer informatie.

De brongegevens extraheren in tekstbestanden

Het ophalen van gegevens uit uw bronsysteem is afhankelijk van de opslaglocatie. Het doel is om de gegevens te verplaatsen naar tekstbestanden met scheidingstekens die door PolyBase worden ondersteund.

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 of 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 volgende tabel bevat Parquet-gegevenstypen die zijn toegewezen aan Azure Synapse Analytics.

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

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 Storage. Op beide locaties moeten de gegevens worden opgeslagen in tekstbestanden. PolyBase kan vanaf beide locaties worden geladen.

U kunt de volgende hulpprogramma's en services 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 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 Azure Synapse Analytics.

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 tekenreeks gebruikt die niet in uw brongegevens wordt gevonden. Gebruik het afsluitprogramma dat u hebt opgegeven met CREATE EXTERNAL FILE FORMAT.

De gegevens laden in faseringstabellen van toegewezen SQL-pools met behulp van 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 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 behulp van een beheerde identiteit.
  • PolyBase met T-SQL werkt goed wanneer uw gegevens zich in Azure Blob Storage of Azure Data Lake Storage 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 Functions gebruiken.
  • PolyBase met SQL Server Integration Services (SSIS) werkt goed wanneer uw brongegevens zich in SQL Server bevinden. SSIS definieert de toewijzingen van de bron-naar-doeltabellen 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 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.

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.

De gegevens invoegen in productietabellen

De INSERT INTO ... 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. Pak 1000 rijen uit de tabel uit naar een bestand, verplaats het 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.