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

如何用PySpark将NAS的.xlsx文件加载至Azure Databricks及相关疑问

关于PySpark读取NAS中Excel文件到Azure Databricks的问题解答

一、操作可行性

完全可行,但需满足两个核心前提:

  • Databricks集群所在虚拟网络与NAS存储网络连通(支持SMB/NFS等协议);
  • 安装Excel文件解析所需的依赖库(PySpark原生不支持Excel格式)。

二、PySpark读取NAS中.xlsx文件的具体步骤

1. 挂载NAS存储到Databricks DBFS

以SMB协议为例,通过dbutils工具将NAS共享目录挂载到Databricks的DBFS路径:

# 配置NAS连接参数
nas_smb_path = "//your-nas-server-name/your-share-folder"
nas_username = "nas-account-username"
nas_password = "nas-account-password"

# 挂载到DBFS指定路径
dbutils.fs.mount(
    source=nas_smb_path,
    mount_point="/mnt/nas-excel-storage",
    extra_configs={
        "fs.smb.account.name": nas_username,
        "fs.smb.account.key": nas_password
    }
)

挂载完成后,可通过dbutils.fs.ls("/mnt/nas-excel-storage")验证是否能访问NAS中的文件。

2. 安装Excel解析依赖库

推荐使用crealytics/spark-excel库,支持直接通过PySpark读取Excel:

  • 在Databricks集群的「库」页面,添加Maven坐标:com.crealytics:spark-excel_2.12:0.13.7(注意对应集群的Scala版本,2.12为常见版本);
  • 或通过pip安装:pip install pyspark-excel(适合单节点测试场景)。

3. 读取Excel文件到Spark DataFrame

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("ReadNASExcel").getOrCreate()

# 读取Excel文件,支持表头、自动推断Schema
excel_df = spark.read.format("com.crealytics.spark.excel") \
    .option("header", "true") \
    .option("inferSchema", "true") \
    .option("dataAddress", "'Sheet1'!A1")  # 指定读取的工作表及起始位置(可选)
    .load("/mnt/nas-excel-storage/your-target-file.xlsx")

# 验证数据
excel_df.show(5)

如果是小文件,也可以用Pandas读取后转换为Spark DataFrame:

import pandas as pd

pd_df = pd.read_excel("/dbfs/mnt/nas-excel-storage/your-target-file.xlsx")
spark_df = spark.createDataFrame(pd_df)

三、替代方案

  • ADF中转同步:利用已配置的ADF NAS链接服务,创建复制活动将Excel文件同步到ADLS Gen2或Blob Storage,再由Databricks读取云存储中的文件。该方案适合大文件批量处理,且能借助ADF的调度能力实现自动化。
  • Python原生库解析:使用openpyxl或xlrd库直接读取NAS挂载路径下的Excel文件,完成复杂格式解析后再转换为Spark DataFrame,适合需要处理合并单元格、复杂公式等特殊场景。
  • 创建外部表:挂载NAS后,通过Spark SQL创建外部表指向Excel文件,方便后续直接用SQL查询:
    CREATE TABLE nas_excel_table
    USING com.crealytics.spark.excel
    OPTIONS (
      path "/mnt/nas-excel-storage/your-target-file.xlsx",
      header "true",
      inferSchema "true"
    )
    

四、能否复用ADF的NAS链接服务在Databricks中获取文件?

不能直接复用。ADF的链接服务是ADF专属的配置资源,Databricks无法直接调用或读取其配置信息。但可以通过以下间接方式利用现有配置:

  1. 从ADF链接服务中提取NAS的连接参数(服务器地址、共享路径、账号密码),在Databricks中用这些参数挂载NAS;
  2. 通过ADF的复制活动或数据流动,将NAS中的Excel文件同步到云存储(如ADLS Gen2),再让Databricks读取云存储中的文件,这也是最常用的联动方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:15:30