Freigeben über


Dekomprimieren und Lesen komprimierter ZIP-Dateien

Sie können mit dem Bash-Befehl unzip Dateien oder Dateiverzeichnisse dekomprimieren, die mit ZIP komprimiert wurden. Wenn Sie eine Datei oder ein Verzeichnis herunterladen oder darauf stoßen, die bzw. das mit .zip endet, dekomprimieren Sie die Daten, ehe Sie versuchen, fortzufahren.

Hinweis

Apache Spark stellt native Codecs für die Interaktion mit komprimierten Parquet-Dateien bereit. Die meisten von Azure Databricks geschriebenen Parquet-Dateien enden mit .snappy.parquet, womit die Snappy-Komprimierung angegeben wird.

Dekomprimieren von Daten

Der %sh Magic-Befehl von Azure Databricks ermöglicht die Ausführung von beliebigem Bash-Code, einschließlich des Befehls unzip.

Im folgenden Beispiel wird eine komprimierte CSV-Datei verwendet, die aus dem Internet heruntergeladen wurde. Weitere Informationen finden Sie unter Herunterladen von Daten aus dem Internet.

Hinweis

Sie können mit den Databricks-Hilfsprogrammen Dateien vor dem Dekomprimieren in den an den Treiber angefügten kurzlebigen Speicher verschieben. ZIP-Dateien in Unity Catalog-Volumes können nicht dekomprimiert werden. Weitere Informationen finden Sie unter Referenz zu Databricks-Hilfsprogrammen (dbutils).

Im folgenden Code wird curl zum Herunterladen und dann unzip zum Dekomprimieren der Daten verwendet:

%sh curl https://resources.lendingclub.com/LoanStats3a.csv.zip --output /tmp/LoanStats3a.csv.zip
unzip /tmp/LoanStats3a.csv.zip

Verwenden Sie dbutils, um die dekomprimierte Datei wie folgt in ein Unity Catalog-Volume zu verschieben:

dbutils.fs.mv("file:/LoanStats3a.csv", "/Volumes/my_catalog/my_schema/my_volume/LoanStats3a.csv")

In diesem Beispiel enthalten die heruntergeladenen Daten einen Kommentar in der ersten Zeile und eine Überschrift in der zweiten Zeile. Nachdem die Daten dekomprimiert und verschoben wurden, verwenden Sie wie im folgenden Beispiel die Standardoptionen zum Lesen von CSV-Dateien:

df = spark.read.format("csv").option("skipRows", 1).option("header", True).load("/Volumes/my_catalog/my_schema/my_volume/LoanStats3a.csv")
display(df)