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

如何在Databricks Python Notebook中读取ADLS Blob的.xpt文件并转CSV

解决方案

1. 读取ADLS Blob中的.xpt文件

在Databricks环境中,可通过以下两种常用方式访问ADLS中的.xpt文件:

方式一:使用ABFS路径直接读取

前提是Databricks集群已配置好ADLS访问权限(如服务主体、SAS令牌或托管身份),直接通过ABFS路径读取二进制流:

import xport.v56
from pyspark.sql import SparkSession

# Databricks中默认已初始化SparkSession,可省略此行
spark = SparkSession.builder.appName("XptToCsv").getOrCreate()

# 替换为你的ADLS文件路径
xpt_path = "abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<文件子路径>/example.xpt"
# 读取二进制文件并加载为xport库对象
with spark.sparkContext.binaryFiles(xpt_path).collect()[0][1] as f:
    library = xport.v56.load(f)

方式二:使用Azure Storage SDK读取

需要更精细控制时,可借助azure-storage-blob库操作:

import xport.v56
from azure.storage.blob import BlobServiceClient

# 替换为你的ADLS连接字符串
connection_string = "<ADLS存储账户连接字符串>"
blob_service_client = BlobServiceClient.from_connection_string(connection_string)

# 替换为对应的容器名和Blob路径
container_name = "<容器名>"
blob_name = "<文件子路径>/example.xpt"
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)

# 下载Blob并加载为xport库对象
with blob_client.download_blob() as f:
    library = xport.v56.load(f)

2. 转换为CSV格式并保存到ADLS

xport加载后的library对象包含SAS数据集,将其转为Pandas DataFrame后即可导出为CSV,再保存回ADLS:

import pandas as pd

# 提取库中的数据集(若有多个数据集,需遍历library.values())
dataset = next(iter(library.values()))
df = pd.DataFrame(dataset)

# 替换为CSV输出路径
csv_output_path = "abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<输出子路径>/output.csv"

# 方式一:用Pandas直接保存(适合小数据量)
df.to_csv(csv_output_path, index=False)

# 方式二:转为Spark DataFrame保存(适合大数据量,支持分布式处理)
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("XptToCsv").getOrCreate()
spark_df = spark.createDataFrame(df)
spark_df.write.mode("overwrite").option("header", "true").csv(csv_output_path)

关键注意事项

  • 执行代码前,确保集群已安装依赖库:%pip install xport azure-storage-blob。
  • 确认Databricks集群对目标ADLS容器拥有读写权限,权限配置方式根据实际场景选择服务主体、SAS令牌或托管身份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:03:23