我试图将名字匹配的文件从一个Azure存储帐户(都在数据湖存储中)复制到另一个。我目前正在尝试使用PySpark来完成这个任务。我列出要查看的文件夹,然后为"from“datalake设置set,并使用dbutils获取相关文件夹中的文件:
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://mycontainer@mydatalake.dfs.core.windows.net/" + folder)
现在我可以检查文件名是否与要复制的条件相匹配,但是如何实际将所需文件列表移到" to“datalake中的文件夹中呢?
发布于 2021-09-08 10:07:54
您需要挂载这两个容器,并按下面的方式在文件系统之间移动文件:
循环中,对于每个迭代,将文件名字段替换为数组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')
也是.
如果容器不是公共的,(/如果它是根文件夹),那么使用dbfs cli在前面创建的挂载点之间移动文件/文件夹。
dbfs mv /mnt/folder1 /mnt/folder2
如果容器的访问级别(如果“匿名读取容器和blobs的访问权限”),您应该能够直接移动文件,甚至无需创建挂载。
在Databricks笔记本中,代码应该是这样的-
%fs mv /mnt/folder1 /mnt/folder2
https://stackoverflow.com/questions/69083658
复制相似问题