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

使用Azure Databricks PySpark访问Azure Files中RDS文件失败求助

解决RDS文件读取失败的问题

核心问题是你用错了读取函数:pd.read_excel() 仅支持读取Excel格式(.xlsx/.xls等),而RDS是R语言的序列化文件格式,两者不兼容,导致读取失败。以下是几种可行的解决方法:

方法一:使用pyreadr库读取

pyreadr是专门用于读取R语言数据格式的Python库,步骤如下:

  1. 先在Databricks中安装依赖库:
%pip install pyreadr requests
  1. 读取带SAS令牌的Azure存储中的RDS文件:
import pyreadr
import requests

url_sas_token = 'https://<my account name>.file.core.windows.net/test/test.rds?st=2020-01-27T10%3A16%3A12Z&se=2020-01-28T10%3A16%3A12Z&sp=rl&sv=2018-03-28&sr=f&sig=XXXXXXXXXXXXXXXXX'

# 从URL下载文件内容到内存
response = requests.get(url_sas_token)
response.raise_for_status()  # 捕获请求错误

# 读取RDS内容并转换为pandas DataFrame
result = pyreadr.read_r_raw(response.content)
pdf = result[None]  # RDS通常存储单个对象,直接取第一个

# 转换为PySpark DataFrame
df = spark.createDataFrame(pdf)

方法二:通过rpy2调用R的readRDS函数

如果环境允许安装R相关依赖,可通过rpy2调用R原生函数读取:

  1. 安装依赖:
%pip install rpy2 requests
  1. 读取代码:
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
import requests

# 启用pandas与R对象的转换
pandas2ri.activate()

url_sas_token = 'https://<my account name>.file.core.windows.net/test/test.rds?st=2020-01-27T10%3A16%3A12Z&se=2020-01-28T10%3A16%3A12Z&sp=rl&sv=2018-03-28&sr=f&sig=XXXXXXXXXXXXXXXXX'

# 下载文件到临时路径
temp_file = "/tmp/test.rds"
response = requests.get(url_sas_token)
with open(temp_file, "wb") as f:
    f.write(response.content)

# 调用R的readRDS读取文件
read_rds = robjects.r['readRDS']
r_data = read_rds(temp_file)

# 转换为pandas DataFrame再转PySpark
pdf = pandas2ri.rpy2py(r_data)
df = spark.createDataFrame(pdf)

方法三:挂载Azure存储后读取(大文件推荐)

如果文件较大,建议先挂载Azure存储账户到Databricks,再读取本地挂载路径的文件:

  1. 挂载存储(替换占位符):
dbutils.fs.mount(
  source = "wasbs://test@<my account name>.blob.core.windows.net",
  mount_point = "/mnt/test",
  extra_configs = {"fs.azure.sas.test.<my account name>.blob.core.windows.net": "你的SAS令牌部分(去掉URL中的前缀)"}
)
  1. 读取挂载路径的RDS文件:
import pyreadr

# 读取挂载路径下的文件
result = pyreadr.read_r("/dbfs/mnt/test/test.rds")
pdf = result[None]
df = spark.createDataFrame(pdf)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:20:38