Entwerfen einer Strategie zum Laden von PolyBase-Daten für einen dedizierten SQL-Pool
Herkömmliche SMP-Data Warehouses (Symmetric Multiprocessing) verwenden einen ETL-Prozess (Extrahieren, Transformieren und Laden) für das Laden von Daten. Der Azure SQL-Pool ist eine Architektur mit massiver Parallelverarbeitung (MPP), die die Vorteile der Skalierbarkeit und Flexibilität von Compute- und Speicherressourcen nutzt.
Ein ELT-Prozess (Extrahieren, Laden und Transformieren) hingegen kann die Vorteile von integrierten verteilten Abfrageverarbeitungsfunktionen nutzen und Ressourcen beseitigen, die vor dem Laden zum Transformieren der Daten erforderlich sind.
Auch wenn SQL-Pools viele Lademethoden unterstützen (u. a. Nicht-PolyBase-Optionen wie BCP (Massenkopierprogramm) und die SQL-BulkCopy-API), stellt PolyBase die schnellste und am besten skalierbare Möglichkeit zum Laden von Daten dar. PolyBase ist eine Technologie, die über die T-SQL-Sprache (Transact-SQL) auf externe Daten zugreift, die in Azure Blob Storage oder Azure Data Lake Storage gespeichert sind.
Implementieren von PolyBase-ELT
ELT (Extrahieren, Laden und Transformieren) ist ein Prozess, bei dem Daten aus einem Quellsystem extrahiert, in ein Data Warehouse geladen und anschließend transformiert werden.
Grundlegende Schritte zum Implementieren eines PolyBase-ELT-Prozesses für den dedizierten SQL-Pool:
- Extrahieren der Quelldaten in Textdateien
- Laden der Daten in Azure Blob Storage oder Azure Data Lake Storage
- Vorbereiten der Daten für das Laden
- Laden der Daten in die Stagingtabellen des dedizierten SQL-Pools mithilfe von PolyBase
- Transformieren der Daten
- Einfügen der Daten in Produktionstabellen
Ein Tutorial zum Laden von Daten finden Sie unter Laden des Datasets „New York Taxicab“.
Weitere Informationen finden Sie unter Lademuster und -strategien.
Extrahieren der Quelldaten in Textdateien
Das Abrufen von Daten aus dem Quellsystem hängt vom Speicherort ab. Ziel ist es, die Daten in durch Trennzeichen getrennte Textdateien zu verschieben, die von PolyBase unterstützt werden.
Externe PolyBase-Dateiformate
PolyBase lädt Daten aus UTF-8- und UTF-16-codierten, durch Trennzeichen getrennten Textdateien. PolyBase wird auch aus den Hadoop-Dateiformaten RC File, ORC und Parquet geladen. PolyBase kann auch Daten aus Dateien laden, die mit Gzip und Snappy komprimiert wurden. PolyBase unterstützt derzeit kein erweitertes ASCII, keine Formate mit fester Breite und keine geschachtelten Formate wie WinZip, JSON oder XML.
Wenn Sie aus SQL Server exportieren, können Sie die Daten mit dem Befehlszeilentool bcp in durch Trennzeichen getrennte Textdateien exportieren. In der folgenden Tabelle finden Sie eine Zuordnung der Parquet-Datentypen zu Azure Synapse Analytics.
Parquet-Datentyp | SQL-Datentyp |
---|---|
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
boolean | bit |
double | float |
float | real |
double | money |
double | SMALLMONEY |
Zeichenfolge | NCHAR |
Zeichenfolge | NVARCHAR |
Zeichenfolge | char |
Zeichenfolge | varchar |
BINARY | BINARY |
BINARY | varbinary |
timestamp | date |
timestamp | smalldatetime |
timestamp | datetime2 |
timestamp | datetime |
timestamp | time |
date | date |
Decimal | Decimal |
Laden der Daten in Azure Blob Storage oder Azure Data Lake Storage
Um die Daten in Azure Storage zu verschieben, können Sie sie in Azure Blob Storage oder Azure Data Lake Storage verschieben. In beiden Fällen sollten die Daten in Textdateien gespeichert werden. PolyBase kann die Daten von beiden Speicherorten laden.
Sie können die folgenden Tools und Dienste verwenden, um Daten in Azure Storage zu verschieben:
- Der Azure ExpressRoute-Dienst verbessert Netzwerkdurchsatz, Leistung und Vorhersagbarkeit. ExpressRoute ist ein Dienst, der Ihre Daten über eine dedizierte private Verbindung zu Azure weiterleitet. Bei ExpressRoute-Verbindungen werden Daten nicht über das öffentliche Internet weitergeleitet. Die Verbindungen bieten mehr Zuverlässigkeit, eine höhere Geschwindigkeit, niedrigere Latenzzeiten und mehr Sicherheit als herkömmliche Verbindungen über das öffentliche Internet.
- Das Hilfsprogramm AzCopy verschiebt Daten über das öffentliche Internet in Azure Storage. Dies funktioniert, wenn Ihre Datenmengen weniger als 10 TB umfassen. Wenn Sie Ladevorgänge in regelmäßigen Abständen mit AzCopy ausführen möchten, testen Sie die Netzwerkgeschwindigkeit, um festzustellen, ob diese geeignet ist.
- Azure Data Factory verfügt über ein Gateway, das Sie auf dem lokalen Server installieren können. Anschließend können Sie eine Pipeline erstellen, um Daten vom lokalen Server in Azure Storage zu verschieben. Weitere Informationen zum Verwenden von Data Factory mit dedizierten SQL-Pools finden Sie unter Laden von Daten in Azure Synapse Analytics.
Vorbereiten der Daten für das Laden
Möglicherweise müssen Sie die Daten in Ihrem Speicherkonto vorbereiten und bereinigen, bevor Sie sie in den dedizierten SQL-Pool laden. Die Datenaufbereitung kann durchgeführt werden, während sich Ihre Daten in der Quelle befinden, während Sie die Daten in Textdateien exportieren oder nachdem sich die Daten in Azure Storage befinden. Am einfachsten ist es, so früh wie möglich im Prozess mit den Daten zu arbeiten.
Definieren externer Tabellen
Bevor Sie Daten laden können, müssen Sie externe Tabellen im Data Warehouse definieren. PolyBase verwendet externe Tabellen, um Daten in Azure Storage zu definieren und auf diese zuzugreifen. Eine externe Tabelle ähnelt einer Datenbanksicht. Die externe Tabelle enthält das Tabellenschema und verweist auf Daten, die außerhalb des Data Warehouse gespeichert sind.
Die Definition externer Tabellen umfasst die Angabe der Datenquelle, des Formats der Textdateien und der Tabellendefinitionen. Im Folgenden finden Sie die Themen zur T-SQL-Syntax, die Sie benötigen:
Formatieren von Textdateien
Nachdem die externen Objekte definiert sind, müssen Sie die Zeilen der Textdateien mit der Definition der externen Tabelle und des Dateiformats abgleichen. Die Daten in den einzelnen Zeilen der Textdatei müssen mit der Tabellendefinition übereinstimmen. So formatieren Sie die Textdateien
- Wenn Ihre Daten aus einer nicht relationalen Quelle stammen, müssen Sie sie in Zeilen und Spalten transformieren. Unabhängig davon, ob die Daten aus einer relationalen oder nicht relationalen Quelle stammen, müssen die Daten so transformiert werden, dass sie mit den Spaltendefinitionen der Tabelle übereinstimmen, in die die Daten geladen werden sollen.
- Formatieren Sie die Daten in der Textdatei so, dass sie mit den Spalten und Datentypen in der Zieltabelle des SQL-Pools übereinstimmen. Eine Nichtübereinstimmung zwischen den Datentypen in den externen Textdateien und der Data Warehouse-Tabelle führt dazu, dass Zeilen beim Laden zurückgewiesen werden.
- Trennen Sie Felder in der Textdatei mit einem Abschlusszeichen. Stellen Sie sicher, dass Sie ein Zeichen oder eine Zeichenfolge verwenden, die nicht in Ihren Quelldaten enthalten ist. Verwenden Sie das durch CREATE EXTERNAL FILE FORMAT angegebene Abschlusszeichen.
Laden der Daten in die Stagingtabellen des dedizierten SQL-Pools mithilfe von PolyBase
Es hat sich bewährt, die Daten in eine Stagingtabelle zu laden. Stagingtabellen ermöglichen das Behandeln von Fehlern, ohne die Produktionstabellen zu beeinträchtigen. Eine Stagingtabelle bietet Ihnen außerdem die Möglichkeit, in SQL-Pool integrierte verteilte Abfrageverarbeitungsfunktionen für Datentransformationen zu verwenden, bevor die Daten in Produktionstabellen eingefügt werden.
Optionen beim Laden mit PolyBase
Um Daten mit PolyBase zu laden, können Sie eine der folgenden Ladeoptionen nutzen:
- Laden externer Daten mithilfe von Microsoft Entra ID
- Laden externer Daten mithilfe einer verwalteten Identität
- PolyBase mit T-SQL funktioniert gut, wenn sich Ihre Daten in Azure Blob Storage oder Azure Data Lake Storage befinden. Es bietet Ihnen die größtmögliche Kontrolle über den Ladevorgang, erfordert aber auch die Definition externer Datenobjekte. Die anderen Methoden definieren diese Objekte im Hintergrund, wenn Sie Quelltabellen zu Zieltabellen zuordnen. Zum Orchestrieren von T-SQL-Ladevorgängen können Sie Azure Data Factory, SSIS oder Azure Functions verwenden.
- PolyBase mit SQL Server Integration Services (SSIS) funktioniert gut, wenn sich Ihre Quelldaten in SQL Server befinden. SSIS definiert die Zuordnung von Quell- zu Zieltabellen und orchestriert darüber hinaus die Last. Wenn Sie bereits über SSIS-Pakete verfügen, können Sie die Pakete so ändern, dass sie mit dem neuen Data Warehouse-Ziel funktionieren.
- PolyBase mit Azure Data Factory ist ein weiteres Orchestrierungstool. Es definiert eine Pipeline und plant Aufträge.
- PolyBase mit Azure Databricks überträgt Daten aus einer Azure Synapse Analytics-Tabelle in einen Databricks-Datenrahmen und/oder schreibt Daten aus einem Databricks-Datenrahmen in eine Azure Synapse Analytics-Tabelle, die PolyBase verwendet.
Nicht von PolyBase stammende Ladeoptionen
Wenn Ihre Daten nicht mit PolyBase kompatibel sind, können Sie BCP oder die SQLBulkCopy-API verwenden. Mit BCP werden Daten direkt in den dedizierten SQL-Pool geladen, ohne Azure Blob Storage zu durchlaufen. Daher ist diese Lösung nur für kleine Lasten vorgesehen. Beachten Sie, dass die Leistung dieser Optionen beim Laden langsamer ist als bei PolyBase.
Daten transformieren
Führen Sie während der Bereitstellung der Daten in der Stagingtabelle entsprechende Transformationen durch, die für Ihre Workload erforderlich sind. Anschließend verschieben Sie die Daten in eine Produktionstabelle.
Einfügen der Daten in Produktionstabellen
Mit der INSERT INTO ... SELECT
-Anweisung verschieben Sie Daten aus der Stagingtabelle in die dauerhafte Tabelle.
Versuchen Sie beim Entwerfen eines ETL-Prozesses, den Prozess für ein kleines Testbeispiel auszuführen. Versuchen Sie, 1.000 Zeilen aus der Tabelle in eine Datei zu extrahieren, sie in Azure zu verschieben und dann in eine Stagingtabelle zu laden.
Ladelösungen von Partnern
Viele unserer Partner stellen Ladelösungen bereit. Weitere Informationen finden Sie in der Liste mit unseren Lösungspartnern.