首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PySpark将文件从一个Azure存储帐户复制到另一个

使用PySpark将文件从一个Azure存储帐户复制到另一个
EN

Stack Overflow用户
提问于 2021-09-07 06:57:29
回答 1查看 1.8K关注 0票数 0

我试图将名字匹配的文件从一个Azure存储帐户(都在数据湖存储中)复制到另一个。我目前正在尝试使用PySpark来完成这个任务。我列出要查看的文件夹,然后为"from“datalake设置set,并使用dbutils获取相关文件夹中的文件:

代码语言:javascript
运行
复制
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中的文件夹中呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-08 10:07:54

您需要挂载这两个容器,并按下面的方式在文件系统之间移动文件:

循环中,对于每个迭代,将文件名字段替换为数组list_of_files中的每个项。

代码语言:javascript
运行
复制
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在前面创建的挂载点之间移动文件/文件夹。

代码语言:javascript
运行
复制
dbfs mv /mnt/folder1 /mnt/folder2

如果容器的访问级别(如果“匿名读取容器和blobs的访问权限”),您应该能够直接移动文件,甚至无需创建挂载。

在Databricks笔记本中,代码应该是这样的-

代码语言:javascript
运行
复制
%fs mv /mnt/folder1 /mnt/folder2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69083658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档