Freigeben über


Optimieren von Quellen

Für jede Quelle mit Ausnahme der Azure SQL-Datenbank wird empfohlen, die aktuelle Partitionierung als ausgewählten Wert zu verwenden. Wenn Sie aus allen anderen Quellsystemen lesen, werden Datenflüsse automatisch basierend auf der Größe der Daten gleichmäßig partitioniert. Für ca. alle 128 MB Daten wird eine neue Partition erstellt. Wenn die Datengröße zunimmt, wird die Anzahl der Partitionen erhöht.

Jede benutzerdefinierte Partitionierung erfolgt , nachdem Spark die Daten gelesen hat und sich negativ auf die Leistung des Datenflusses auswirkt. Da die Daten beim Lesen gleichmäßig partitioniert werden, wird dies nicht empfohlen, es sei denn, Sie verstehen zuerst die Form und Kardinalität Ihrer Daten.

Hinweis

Lesegeschwindigkeiten können durch den Durchsatz Ihres Quellsystems begrenzt werden.

Azure SQL-Datenbankquellen

Die Azure SQL-Datenbank verfügt über eine eindeutige Partitionierungsoption namens "Quellpartitionierung". Durch aktivieren der Quellpartitionierung können Sie ihre Lesezeiten aus der Azure SQL-Datenbank verbessern, indem parallele Verbindungen im Quellsystem aktiviert werden. Geben Sie die Anzahl der Partitionen und die Partitionierung Ihrer Daten an. Verwenden Sie eine Partitionsspalte mit hoher Kardinalität. Sie können auch eine Abfrage eingeben, die dem Partitionierungsschema Ihrer Quelltabelle entspricht.

Tipp

Bei der Quellpartitionierung ist die E/A des SQL Server der Engpass. Wenn Sie zu viele Partitionen hinzufügen, wird die Quelldatenbank möglicherweise gesättigt. In der Regel sind vier oder fünf Partitionen ideal, wenn Sie diese Option verwenden.

Quellpartitionierung

Isolationsstufe

Die Isolationsstufe des Lesevorgangs in einem Azure SQL-Quellsystem wirkt sich auf die Leistung aus. Wenn Sie die Option „Lesen ohne Commit“ auswählen, ergibt sich die schnellste Leistung, und Datenbanksperren werden verhindert. Weitere Informationen zu SQL-Isolationsstufen finden Sie unter Grundlegendes zu Isolationsstufen.

Lesen per Abfrage

Sie können aus der Azure SQL-Datenbank mithilfe einer Tabelle oder einer SQL-Abfrage lesen. Wenn Sie eine SQL-Abfrage ausführen, muss die Abfrage abgeschlossen werden, bevor die Transformation gestartet werden kann. SQL-Abfragen können hilfreich sein, um Vorgänge zu pushen, die möglicherweise schneller ausgeführt werden, und die Datenmenge zu reduzieren, die von einem SQL Server gelesen wird, z. B. SELECT-, WHERE- und JOIN-Anweisungen. Bei einem Pushdown von Vorgängen ist es nicht mehr möglich, die Herkunft und Leistung der Transformationen nachzuverfolgen, bevor die Daten in den Datenfluss gelangen.

Azure Synapse Analytics-Quellen

Bei Verwendung von Azure Synapse Analytics ist eine Einstellung namens "Staging aktivieren" in den Quelloptionen vorhanden. Dadurch kann der Dienst per Staging aus Synapse lesen. Dies verbessert die Leseleistung erheblich, da sehr leistungsstarke Funktionen zum Massenladen verwendet werden, wie z. B. CETAS- und COPY-Befehle. Die Aktivierung von Staging erfordert, dass Sie einen Azure Blob Storage- oder Azure Data Lake Storage gen2-Zwischenspeicherort in den Einstellungen der Datenflussaktivität angeben.

Staging aktivieren

Dateibasierte Quellen

Parquet im Vergleich zum mit durch Trennzeichen getrennten Text

Während Datenflüsse verschiedene Dateitypen unterstützen, wird das Spark-native Parkettformat für optimale Lese- und Schreibzeiten empfohlen.

Wenn Sie denselben Datenfluss für eine Reihe von Dateien ausführen, empfehlen wir, aus einem Ordner zu lesen, indem Sie Wildcardpfade verwenden oder aus einer Liste von Dateien lesen. Eine einzelne Ausführung von Datenflussaktivitäten kann alle Ihre Dateien im Batch verarbeiten. Weitere Informationen zum Konfigurieren dieser Einstellungen finden Sie im Abschnitt " Quelltransformation " der Dokumentation zum Azure Blob Storage-Connector .

Vermeiden Sie nach Möglichkeit die Verwendung der For-Each-Aktivität, um Datenflüsse über eine Reihe von Dateien auszuführen. Dies führt dazu, dass jede Iteration des for-each einen eigenen Spark-Cluster startet, was oft nicht notwendig ist und teuer sein kann.

Inline-Datensätze im Vergleich zu freigegebenen Datensätzen

ADF- und Synapse-Datasets sind freigegebene Ressourcen in Ihren Werken und Arbeitsbereichen. Wenn Sie jedoch eine große Anzahl von Quellordnern und -dateien mit durch Trennzeichen getrennten Text- und JSON-Quellen lesen, können Sie die Leistung der Datenflussdateiermittlung verbessern, indem Sie die Option "Benutzerprojektiertes Schema" in der Projektion festlegen | Dialogfeld "Schemaoptionen". Diese Option deaktiviert die Standardschema-AutoErmittlung von ADF und verbessert die Leistung der Dateiermittlung erheblich. Bevor Sie diese Option festlegen, müssen Sie die Projektion so importieren, dass ADF über ein vorhandenes Schema für die Projektion verfügt. Diese Option funktioniert nicht mit Schema-Drift.

Weitere Artikel zum Datenfluss finden Sie in Bezug auf die Leistung: