Databricks中.display()无结果,挂载ADLS Gen2后DBFS Explorer不显示
问题诊断与解决:ADLS Gen2挂载后读取无结果、DBFS Explorer不显示的问题
用户场景
在新搭建的Databricks环境中挂载Azure ADLS Gen2后,连接测试正常,但出现两个异常:
- 执行Spark读取JSON/CSV文件的代码仅运行但无结果展示:
path = 'some/path/in/ADLS_Gen2/' df= spark.read.json(path) df.display()
- DBFS Explorer中看不到挂载点,但执行
dbutils.fs.ls(path)能正常列出对应文件夹下的所有文件。
可能的原因及解决方法
一、DBFS Explorer无法看到挂载点但dbutils.fs.ls可访问
- 会话级挂载限制:若挂载操作仅在单个Notebook会话或集群初始化脚本中执行(未配置全局挂载),DBFS Explorer仅展示Workspace级的全局挂载点,因此无法看到该挂载。
解决:通过Workspace设置页(Settings > Cloud > DBFS > Mounts)配置全局挂载,或在挂载命令中添加--scope参数绑定到全局范围。 - 非标准挂载路径:Databricks DBFS Explorer默认优先展示
/mnt/前缀的挂载路径,若挂载到其他路径(如/adls/),需手动在DBFS Explorer的路径输入框中填写完整路径才能查看。也可重新挂载到/mnt/开头的路径下,便于自动识别。
二、读取文件无结果返回
- 文件格式不兼容:
- JSON文件若为多行嵌套结构(非每行一个独立JSON对象),默认解析规则会生成空DataFrame,需添加
multiLine参数:df = spark.read.option("multiLine", "true").json(path) - CSV文件若存在表头缺失、分隔符错误、编码异常等问题,会导致读取后无有效数据,需明确指定参数:
df = spark.read.option("header", "true").option("sep", ",").csv(path)
- JSON文件若为多行嵌套结构(非每行一个独立JSON对象),默认解析规则会生成空DataFrame,需添加
- 路径配置错误:确认
path变量使用的是挂载后的DBFS路径(如挂载到/mnt/adls,则路径应为/mnt/adls/some/path/),而非ADLS原生的abfss://路径(原生路径需单独配置权限)。 - 无有效可读取文件:虽然
dbutils.fs.ls能列出文件,但文件可能为空,或文件名不符合Spark默认匹配规则(如后缀非.json/.csv)。可添加递归读取参数或指定文件后缀:df = spark.read.option("recursiveFileLookup", "true").json(path + "*.json") - Spark读取权限不足:挂载时使用的服务Principal可能仅拥有文件列表权限,无文件读取权限。可通过
dbutils.fs.head(path + "sample.json")测试是否能读取文件内容,若报错需更新该服务Principal在ADLS中的读取权限。
内容的提问来源于stack exchange,提问作者Darkmaster
相关产品推荐
相关产品推荐

