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

在Synapse Notebook中用Python/PySpark访问on premise共享驱动器文件

访问本地共享驱动器文件的Python/PySpark实现方案

一、Python 原生实现

1. 读取共享驱动器上的CSV文件

共享驱动器路径在Windows下通常为\\server_name\shared_folder,Linux/macOS下可挂载后用本地路径或//server_name/shared_folder。用pandas直接读取:

import pandas as pd

# 共享驱动器路径
shared_path = r"\\company-server\department-shares\sales\data.csv"
# 读取CSV
df = pd.read_csv(shared_path)
print(df.head())

2. 读取并解压共享驱动器上的ZIP文件

如果ZIP包内包含单个CSV文件,可直接读取;若有多个文件,需遍历解压:

import zipfile
import pandas as pd

zip_path = r"\\company-server\department-shares\marketing\reports.zip"

# 方式1:直接读取ZIP内的单个CSV
df = pd.read_csv(zip_path, compression='zip')

# 方式2:遍历ZIP内所有文件并处理
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
    # 查看ZIP内文件列表
    print(zip_ref.namelist())
    # 读取指定文件
    with zip_ref.open('monthly_report.csv') as f:
        df = pd.read_csv(f)
    # 或解压到临时目录(可选)
    zip_ref.extractall(r"C:\temp\extracted_reports")

权限注意事项

如果共享驱动器需要身份验证,可使用pywin32模块手动登录(仅Windows环境):

import win32net
import win32netcon

# 登录共享驱动器
server_name = "company-server"
username = "domain\\your-username"
password = "your-password"

win32net.NetUseAdd(
    None,
    2,
    {
        'remote': f"\\\\{server_name}",
        'username': username,
        'password': password,
        'domain': 'your-domain'
    },
    win32netcon.USE_NEED_CONNECT
)

# 之后即可正常访问共享路径

二、PySpark 实现

1. 读取共享驱动器上的CSV文件

确保Spark集群所有节点都能访问该共享驱动器(Windows节点需映射共享盘,Linux节点需挂载),路径写法如下:

from pyspark.sql import SparkSession

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

# 共享路径写法1:Windows风格
shared_csv_path = r"\\company-server\department-shares\operations\daily_data.csv"
# 或写法2:用file://前缀(兼容跨平台)
shared_csv_path = "file:////company-server/department-shares/operations/daily_data.csv"

df = spark.read.csv(shared_csv_path, header=True, inferSchema=True)
df.show(5)

2. 读取共享驱动器上的ZIP文件

Spark原生支持读取ZIP压缩的CSV文件(自动解压),如果ZIP内包含多个文件,可直接读取所有文件:

# 读取ZIP内的所有CSV文件
zip_path = r"\\company-server\department-shares\hr\employee_records.zip"
df = spark.read.csv(zip_path, header=True, inferSchema=True)
df.show(5)

# 如果需要指定ZIP内的特定文件,可使用通配符
specific_file_path = r"\\company-server\department-shares\hr\employee_records.zip\2024_*.csv"
df = spark.read.csv(specific_file_path, header=True, inferSchema=True)

集群模式注意事项

  • 所有Worker节点必须能访问目标共享驱动器,否则会出现文件找不到的错误。
  • 若使用YARN集群,需确保YARN用户拥有共享驱动器的访问权限。
  • 避免在路径中使用中文或特殊字符,防止编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:52:36