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

在Azure Databricks中读取Parquet文件自定义元数据失败

读取Parquet文件级自定义元数据的正确方法

你当前的代码里,printSchema()只会输出DataFrame的数据列结构,也就是Parquet文件存储的表字段信息,和文件本身的自定义元数据完全无关,所以读不到是正常的。要获取文件级的自定义元数据,可使用以下两种方法:

方法一:用Databricks的dbutils工具(简单直接)

storageaccount = 'zzzzzz'
containername = 'yyyyy'
access_key = 'xxxx'
spark.conf.set(f'fs.azure.account.key.{storageaccount}.blob.core.windows.net', access_key)

path = f"wasbs://{containername}@{storageaccount}.blob.core.windows.net/generated_example_10m.parquet"

# 获取文件基础信息(路径、大小等)
file_basic_info = dbutils.fs.ls(path)[0]
print("文件基础信息:", file_basic_info)

# 获取文件的自定义元数据
file_metadata = dbutils.fs.head(path, 0).getMetadata()
print("文件级自定义元数据:", file_metadata)

dbutils.fs.head(path, 0)会读取文件头信息,通过getMetadata()就能拿到你设置的自定义键值对。

方法二:用PyArrow直接解析Parquet文件(通用Spark环境适用)

如果需要更灵活的元数据处理,或者在非Databricks的Spark环境中,用PyArrow是更可靠的方式:

storageaccount = 'zzzzzz'
containername = 'yyyyy'
access_key = 'xxxx'
spark.conf.set(f'fs.azure.account.key.{storageaccount}.blob.core.windows.net', access_key)

import pyarrow.parquet as pq
from pyarrow.fs import AzureBlobFileSystem

# 初始化Azure Blob文件系统连接
fs = AzureBlobFileSystem(account_name=storageaccount, account_key=access_key)

# 打开目标Parquet文件
file_path = f"{containername}/generated_example_10m.parquet"
with fs.open_input_file(file_path) as file_stream:
    parquet_file = pq.ParquetFile(file_stream)
    # 获取完整文件元数据
    full_metadata = parquet_file.metadata
    # 提取自定义元数据(默认是字节类型,转成字符串)
    custom_metadata = {k.decode('utf-8'): v.decode('utf-8') for k, v in full_metadata.metadata.items()}
    print("文件级自定义元数据:", custom_metadata)

PyArrow会直接解析Parquet文件的元数据块,包括你添加的自定义内容,结果是键值对形式的字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:25:21