Ich versuche, Dateien, deren Namen bestimmten Kriterien entsprechen, von einem Azure-Speicherkonto (alle im Data Lake-Speicher) in ein anderes zu kopieren. Ich versuche derzeit, dies mit PySpark zu tun. Ich liste die Ordner auf, die ich mir ansehen möchte, richte dann Spark für den "Von"-Datalake ein und verwende dbutils, um die Dateien in den relevanten Ordnern abzurufen:
spark.conf.set("fs.azure.account.key."+dev_storage_account_name+".dfs.core.windows.net",dev_storage_account_access_key)
for folder in raw_folders:
list_of_files = dbutils.fs.ls("abfss://[email protected]/" + folder)
Jetzt kann ich überprüfen, ob die Dateinamen den Bedingungen zum Kopieren entsprechen, aber wie kann ich meine Liste der gewünschten Dateien tatsächlich in Ordner in meinem "to"-Datalake verschieben?
Sie müssen beide Container mounten und wie folgt verwenden, um Dateien zwischen Dateisystemen zu verschieben:
Ersetzen Sie in der Schleife für jede Iteration das Dateinamenfeld durch jedes Element im Array list_of_files
dbutils.fs.mv('abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<directory-name>/demo/test.csv', 'abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<directory-name>/destination/renamedtest.csv')
Ebenfalls....
Wenn Container nicht öffentlich sind (/ wenn es sich um den Stammordner handelt), verwenden Sie dbfs cli, um Dateien/Ordner zwischen den zuvor erstellten Einhängepunkten zu verschieben.
dbfs mv /mnt/folder1 /mnt/folder2
Wenn die Zugriffsebene der Container "anonymer Lesezugriff für Container und Blobs" ist, sollten Sie Dateien direkt verschieben können, ohne sogar Mounts zu erstellen.
Im Databricks-Notizbuch sollte der Code etwa so aussehen -
%fs mv /mnt/folder1 /mnt/folder2
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen