Wissen

Bessere Performance durch Spark Autotune in Fabric

Spark Autotune ist ein Microsoft Fabric Feature, das automatisch zu einer besseren Abfrageperformance führt. Fakt ist, Autotune spart Zeit und Ressourcen. Wie, das hat Benjamin Konrad von der drjve AG in dem folgenden Beitrag zusammengefasst. 

Spark bietet mehrere Konfigurationsparameter zur Performanceoptimierung an. Diese Parameter von Hand zu tunen ist sehr aufwendig, und die optimale Einstellung hängt von der einzelnen Abfrage, den zu verarbeitenden Daten, und der zur Verfügung stehenden Hardware (Anzahl der Nodes, Anzahl der CPUs, verfügbarer RAM) ab. 

Mit dem Autotune Spark Configuration Feature bietet Microsoft Fabric die Möglichkeit, drei dieser Parameter durch ein ML Modell automatisch optimieren zu lassen. Dabei erkennt Fabric automatisch strukturell ähnliche Abfragen und erstellt für jede Abfrage ein eigenes Modell

  

Die drei optimierten Konfigurationsparameter sind: 

  • spark.sql.shuffle.partitions,
  • spark.sql.autoBroadcastJoinThreshold, und
  • spark.sql.files.maxPartitionBytes. 

  

spark.sql.shuffle.partitions 

Diese Konfiguration gibt an, mit wie vielen Partitionen Spark nach einem Shuffle arbeiten soll. 

Wer nicht weiß, was mit Partition und Shuffle gemeint ist, kann sich diesen hervorragenden Blogpost durchlesen, der nicht nur die Grundbegriffe klärt, sondern auch eine Pythonfunktion zur dynamischen Festlegung dieses Wertes bietet. 

  

spark.sql.autoBroadcastJoinThreshold 

Jeder DataFrame, der (in Bytes) kleiner als dieser Wert ist, wird bei einem Join automatisch gebroadcastet. 

Broadcasting bedeutet, dass der gesamte DataFrame auf jeden einzelnen Node des Spark Clusters kopiert wird. Dadurch kann der Join ohne einen Shuffle ausgeführt werden, was massiv Zeit spart. Im Default steht dieser Wert auf 10 MB. 

Ein Broadcast kann auch in der Abfrage explizit angeordnet werden (die Syntax ist hier zu finden). 

  

spark.sql.files.maxPartitionBytes 

Die maximale Anzahl an Bytes, die in eine Partition dürfen, wenn Dateien eingelesen werden. Im Default sind das 128 MB. Da die empfohlene Dateigröße bei Delta Lake Tabellen 1GB beträgt, würden aus einer Datei 8 Partitionen generiert werden. Diese Dateigröße ist auch bei Fabric defaultmäßig eingestellt, jedoch nicht über die im Artikel genannte Property spark.databricks.delta.optimize.maxFileSize, die sich einzig auf den OPTIMIZE Befehl bezieht, sondern über das Microsoft eigene Optimize Write Feature, dessen Dateigröße über die Property spark.microsoft.delta.optimizeWrite.binSize eingestellt wird und im Default auf 1 GB steht.

Um Autotune zu aktivieren, muss einfach die Spark Property spark.ms.autotune.enabled auf true gesetzt werden. Dies geschieht am besten in den Environments, die von den Notebooks genutzt werden, kann aber auch im Notebook Code gesetzt werden. Abschließend ist darauf hinzuweisen, dass Autotune nicht in High Concurrency Sessions und nicht in Workspaces mit Private Endpoints funktioniert. Gerade letzteres ist eine massive Einschränkung für produktive Szenarien, und ich hoffe, dass Microsoft hier noch nachbessert. Nach der Aktivierung benötigt Autotune ca. 25 Runs bis es genug Daten für eine Optimierung gesammelt hat. Danach sollten sich Verbesserungen in der Notebook Run Series zeigen. 

Über den Autor: 

Benjamin Konrad ist seit 2016 als BI Berater im Microsoft Umfeld tätig und seit 2022 Teil der drjve AG. Seine Kerngebiete umfassen Power BI, Azure Data Platform und Infrastruktur, Big Data Systeme sowie Datenmodellierung. Mit langjähriger, branchenübergreifender sowie internationaler Projekterfahrung bietet er umfassende Expertise in den Bereichen Business Intelligence, Datentransformation- und analyse, und Architektur.

Bei weiteren Fragen kommen Sie gerne auf mich zu:

Benjamin Konrad

Senior Consultant

Weitere Beiträge

Wissen

CCH® Tagetik: Ein Blick auf das neue UI/UX

weiterlesen

Wissen

Aimplan, die Software für Finanzplanung, Budgetierung, Forecasting und Reporting auf Basis der Microsoft Power BI Plattform.

weiterlesen

Wissen

Untersuchung der KI-Fähigkeiten in der Vertragsanalyse: Azure AI Studio vs. Microsoft Syntex

weiterlesen
Up