You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Lake中JPG文件无法在Databricks加载的问题求助

解决Databricks中加载并显示ADLS Blob存储JPG图片的问题

问题分析

  • 使用spark.read.format("image").load(path)已成功读取图片,返回的DataFrame包含图片元数据与二进制数据,但直接display只会展示数据结构,无法渲染图片;
  • binaryFile方法报错是因为集群禁用了Scala UDF,而该格式的展示依赖Scala UDF处理,因此无法使用。

基于Python原生库的解决方案

利用Python原生base64模块将图片二进制数据编码为Base64格式,结合Databricks的displayHTML功能直接渲染图片,无需安装第三方库。

步骤1:读取图片数据

path = 'abfss://dev@storage.dfs.core.windows.net/username/project_name/test.jpg'
df = spark.read.format("image").load(path)

步骤2:提取二进制数据并转码

将Spark DataFrame转为Pandas DataFrame(单张/多张图片均适用),对二进制数据进行Base64编码:

import base64

# 转成Pandas DataFrame方便处理
pd_df = df.select("image.data", "image.origin").toPandas()

# 处理单张图片
img_base64 = base64.b64encode(pd_df.iloc[0]['data']).decode('utf-8')
img_src = f"data:image/jpeg;base64,{img_base64}"

步骤3:渲染显示图片

使用displayHTML直接生成可展示的图片:

displayHTML(f'<img src="{img_src}" width="500" />')

多张图片批量展示

如果需要展示多个图片,可循环生成HTML标签并拼接:

html_content = ""
for _, row in pd_df.iterrows():
    img_base64 = base64.b64encode(row['data']).decode('utf-8')
    img_src = f"data:image/jpeg;base64,{img_base64}"
    # 拼接图片路径与图片标签
    html_content += f'<div><p>图片路径:{row["origin"]}</p><img src="{img_src}" width="300" /></div><br/>'

displayHTML(html_content)

验证数据读取正确性

若需确认图片元数据是否正确读取,可执行以下代码查看:

df.show()
df.printSchema()

内容的提问来源于stack exchange,提问作者hkay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:05:21