Databricks目录已存在却触发java.io.FileNotFoundException问题求助
Databricks中
dbutils.fs.cp复制目录报错FileNotFoundException的解决方法 问题场景
执行目录复制代码:
dbutils.fs.cp("/path/to/directory", "new_path/to/directory")
提前用R代码确认目录存在:
folders <- list.folders("/path/to/", full.names = TRUE) print(folders)
但仍收到错误:
java.io.FileNotFoundException: /path/to/directory
排查与解决步骤
统一文件系统路径格式:
R的list.folders检测的是Driver节点本地文件系统,而dbutils.fs.cp默认操作的是DBFS(分布式存储)。需确认路径前缀:- 若操作DBFS目录,路径需加
dbfs:/前缀,比如dbfs:/path/to/directory - 用
dbutils.fs.ls("/path/to/")替代R代码,验证DBFS中目录是否存在,确保两者操作同一文件系统
- 若操作DBFS目录,路径需加
添加递归复制参数:
dbutils.fs.cp默认仅复制文件,复制目录必须指定recurse=True,否则会将目录当作文件处理导致找不到。正确代码示例:dbutils.fs.cp("dbfs:/path/to/directory", "dbfs:/new_path/to/directory", recurse=True)检查路径大小写与权限:
分布式存储路径通常区分大小写,确认源路径大小写与实际目录完全匹配;同时确保执行代码的账号对源目录有读取权限,对目标路径有写入权限
内容的提问来源于stack exchange,提问作者Sanchez333
相关产品推荐
相关产品推荐

