数据搭建文件系统 - %sh ls与%fs ls的区别

6

我有一些文件位于%sh ls,我想将这些文件移动到databricks的文件系统中(使它们在%fs ls中可见)。

你们中有人知道%sh ls%fs ls之间的区别是什么,以及如何在它们之间移动文件吗?

我知道我们可以使用dbutils.fs.cp来移动已经位于%fs ls位置的文件。

任何帮助或指针都将不胜感激。

1个回答

6

当您通过%sh执行命令时,它们仅在驱动程序节点上执行,并在该计算机上显示内容。 当您使用%fs ls时,默认情况下会显示DBFS(Databricks文件系统)的内容,但如果将file://前缀添加到路径中,它也可以显示本地内容。

您可以按以下方式复制或移动文件:

  1. 使用dbutils.fs.cp("file:///local-path", "dbfs-path") (或dbutils.fs.mv
  2. 通过使用所谓的FUSE挂载将DBFS挂载到本地机器上 - 您需要将/dbfs/前缀添加到您希望在DBFS上拥有的路径上,例如,/dbfs/FileStore/....(如果您正在使用DBR> = 7.x的社区版,则可能不起作用,因此您只能使用第一种方法)

P.S. 您可以在文档中找到更多信息。


另一个很棒的答案。有关(DevOps)存储库文件位于何处的提示?我目前正在使用%sh,但看不到它们。 - d8aninja
1
如果你在谈论 Repos 文件,那么它们就在 Workspace 本身中,它们不是真正的文件。 - Alex Ott
啊,我现在更好地理解了你之前的评论。很兴奋看到这些功能在这个用例中的发展方向;import from my_module将非常有用。 - d8aninja
去年发布了名为“存储库中的文件”的功能,允许将Python文件导入为Python模块:https://docs.databricks.com/repos/work-with-notebooks-other-files.html#work-with-python-and-r-modules。@d8aninja - Alex Ott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接