Online Magazine
Excel Files mit Azure Synapse Analytics einlesen

Es gibt verschiedene Wege, wie Daten in Azure Synapse Analytics eingelesen werden können. Nachfolgend zeige ich zwei verschiedene Methoden, wie Excel-Dateien eingelesen werden können.
von Stefan Koch

Die Noob-Variante ist schneller umgesetzt, da eine Pipeline eingesetzt wird. Sie bietet aber weniger Flexibilität während des Betriebes, da es ein «starres Setup» ist. Die Pro-Variante braucht ein bisschen mehr Konfiguration, ist aber dafür umso flexibler während des Betriebes, da die Daten direkt via einem Spark-Pool eingelesen werden.
Noob Hack
Via Integrate (Punkt 1) wähle ich eine neue Ressource und erstelle eine «Copy Data Pipeline».
Das Excel ist in einem Data Lake gespeichert und das Ziel ist es, die Daten im Parquet-Format zu speichern, so dass sie als Integrations-Datenset zur Verfügung gestellt und weiterverarbeitet werden können.
Die Pipeline ist mit wenigen Mausklicks zusammengestellt und sieht folgendermassen aus:
Via Debug wird die Pipeline gestartet und nach wenigen Augenblicken erscheint idealerweise eine Erfolgsmeldung.
Die Daten stehen dann im Synapse Workspace als Integration Dataset zur Verfügung, hier mit dem Namen «DestinationDataset_z8q»:
Dieses Dataset kann nun in der Synapse Analytics Plattform weiterverarbeitet werden.
Pro Hack
Damit Daten aus Excel-Dateien mit einem Spark Cluster in Azure Synapse Analytics extrahiert werden können, müssen zuerst die benötigten Bibliotheken (Libraries) installiert werden. Eine bekannte Excel Library für Spark ist crealytics: https://github.com/crealytics/spark-excel
Mit dieser Bibliothek ist es aber leider noch nicht gemacht, es müssen noch zusätzliche Bibliotheken installiert werden. Eine Rolle spielt natürlich auch, welche Software-Versionen auf dem Spark-Cluster installiert sind. In diesem Beispiel wurde ein Spark-Cluster mit folgender Konfiguration verwendet:
Als erstes müssen die entsprechenden Jar-Files heruntergeladen werden. Nachfolgend ist eine Auflistung der entsprechenden Links von allen benötigten Jar-Dateien:
- https://mvnrepository.com/artifact/com.crealytics/spark-excel_2.11/0.13.7
- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans/3.1.0
- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.4
- https://mvnrepository.com/artifact/commons-codec/commons-codec/1.13
- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.9
- https://mvnrepository.com/artifact/com.github.pjfanning/excel-streaming-reader/2.3.6
- https://mvnrepository.com/artifact/org.apache.commons/commons-compress/1.20
- https://mvnrepository.com/artifact/com.zaxxer/SparseBitSet/1.2
- https://mvnrepository.com/artifact/org.apache.commons/commons-math3/3.6.1
- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml/4.1.2
- https://mvnrepository.com/artifact/org.apache.poi/poi/4.1.2
- https://mvnrepository.com/artifact/xml-apis/xml-apis/1.4.01
- https://mvnrepository.com/artifact/com.github.pjfanning/poi-shared-strings/1.0.4
- https://mvnrepository.com/artifact/com.h2database/h2/1.4.200
- https://mvnrepository.com/artifact/com.github.virtuald/curvesapi/1.06
- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas/4.1.2
- https://mvnrepository.com/artifact/com.norbitltd/spoiwo_2.11/1.8.0
- https://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.7.30
- https://mvnrepository.com/artifact/org.apache.commons/commons-text/1.8
- https://mvnrepository.com/artifact/org.scala-lang.modules/scala-xml_2.11/1.3.0
Im Synapse Studio können via "Manage" (Punkt1) die Jar-Pakete in den Workspace hochgeladen werden:
Anschliessend müssen die Pakete noch dem jeweiligen Spark Cluster zugewiesen werden:
Jetzt können die Workspace-Pakete ausgewählt werden:
Es dauert ein paar Minuten, bis die Pakete im Cluster fertig installiert sind. Sobald die Installation abgeschlossen ist, kann man Excel-Dateien direkt mit Spark auslesen:
Falls ein Spark Cluster mit Spark Version 3.0 verwendet wird, müssen für folgende 3 Pakete andere Versionen installiert werden, die restlichen bleiben gleich:
- https://mvnrepository.com/artifact/org.scala-lang.modules/scala-xml_2.12/2.0.0
- https://mvnrepository.com/artifact/com.crealytics/spark-excel_2.12/0.13.7
- https://mvnrepository.com/artifact/com.norbitltd/spoiwo_2.12/1.8.0
Die Konfiguration des Spark-Clusters lautet wie folgt:
