Partager via


Développer et lire des fichiers compressés au format Zip

Vous pouvez utiliser la commande Bash unzip pour développer des fichiers ou des répertoires de fichiers qui ont été compressés au format Zip. Si vous téléchargez ou rencontrez un fichier ou un répertoire se terminant par .zip, développez les données avant de continuer.

Notes

Apache Spark fournit des codecs natifs pour interagir avec les fichiers compressés au format Parquet. La plupart des fichiers Parquet écrits par Azure Databricks se terminent par .snappy.parquet, indiquant qu’ils utilisent la compression snappy.

Comment décompresser des données au format Zip

La commande magic Azure Databricks %sh permet d’exécuter du code Bash arbitraire, y compris la commande unzip.

L’exemple suivant utilise un fichier CSV zippé téléchargé à partir d’Internet. Voir Télécharger des données à partir d’Internet.

Remarque

Vous pouvez utiliser Databricks Utilities pour déplacer des fichiers vers le stockage éphémère attaché au pilote avant de les développer. Vous ne pouvez pas développer des fichiers zip pendant qu’ils résident dans des volumes Unity Catalog. Voir Informations de référence sur Databricks Utilities (dbutils).

Le code suivant utilise curl pour télécharger les données zippées et exécuter unzip pour les développer :

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

Utilisez dbutils pour déplacer le fichier développé vers un volume Unity Catalog, comme suit :

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

Dans cet exemple, les données téléchargées ont un commentaire sur la première ligne et un en-tête sur la deuxième. Maintenant que les données ont été développées et déplacées, utilisez des options standard pour lire les fichiers CSV, comme dans l’exemple suivant :

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