Databricks 文件系统 - %sh ls 与 %fs ls
Databricks Filesystem - %sh ls vs %fs ls
我在 %sh ls
中有一些文件,我想将这些文件移动到数据块的文件系统中(使它们在 %fs ls
中可见)。
你们知道 %sh ls
和 %fs ls
之间的区别吗?我如何在它们之间移动文件?
我知道我们可以利用 dbutils.fs.cp
移动已经在 %fs ls
位置的文件。
感谢任何帮助或指点。
当您通过 %sh
执行命令时,它们仅在驱动程序节点上执行,并显示该机器上的内容。当您执行 %fs ls
时,默认情况下会显示 DBFS(Databricks 文件系统)的内容,但如果您在路径中添加 file://
前缀,它也可以显示本地内容。
您可以复制或移动文件文件如下:
- 使用
dbutils.fs.cp("file:///local-path", "dbfs-path")
(或dbutils.fs.mv
)
- 通过使用将 DBFS 挂载到本地计算机的所谓 FUSE 挂载 - 您需要将
/dbfs/
前缀添加到您希望在 DBFS 上拥有的路径,例如 /dbfs/FileStore/....
(如果你正在使用 DBR >= 7.x 的社区版,那么它可能无法工作,所以你只有第一种方法)
P.S。您可以在 documentation.
中找到更多信息
我在 %sh ls
中有一些文件,我想将这些文件移动到数据块的文件系统中(使它们在 %fs ls
中可见)。
你们知道 %sh ls
和 %fs ls
之间的区别吗?我如何在它们之间移动文件?
我知道我们可以利用 dbutils.fs.cp
移动已经在 %fs ls
位置的文件。
感谢任何帮助或指点。
当您通过 %sh
执行命令时,它们仅在驱动程序节点上执行,并显示该机器上的内容。当您执行 %fs ls
时,默认情况下会显示 DBFS(Databricks 文件系统)的内容,但如果您在路径中添加 file://
前缀,它也可以显示本地内容。
您可以复制或移动文件文件如下:
- 使用
dbutils.fs.cp("file:///local-path", "dbfs-path")
(或dbutils.fs.mv
) - 通过使用将 DBFS 挂载到本地计算机的所谓 FUSE 挂载 - 您需要将
/dbfs/
前缀添加到您希望在 DBFS 上拥有的路径,例如/dbfs/FileStore/....
(如果你正在使用 DBR >= 7.x 的社区版,那么它可能无法工作,所以你只有第一种方法)
P.S。您可以在 documentation.
中找到更多信息