如何无需下载将Databricks生成的CSV文件共享至Windows共享文件夹?
Databricks File Store中CSV文件的分享与Windows共享文件夹存储方案
一、分享给无Databricks权限的终端用户
方法1:生成临时签名下载链接
通过Databricks API生成带有效期的签名URL,用户无需权限即可下载,且URL过期后自动失效,安全性较高。
在Notebook中执行以下代码(需替换实例地址、访问令牌和文件路径):
from databricks_cli.sdk.api_client import ApiClient from databricks_cli.dbfs.api import DbfsApi # 初始化API客户端 api_client = ApiClient(host="https://<你的Databricks实例地址>", token="<你的访问令牌>") dbfs_api = DbfsApi(api_client) # 生成有效期为3600秒(1小时)的签名URL signed_url = dbfs_api.create_signed_read(path="/dbfs/FileStore/你的文件名称.csv", expiration_seconds=3600) print("临时下载链接:", signed_url)
将输出的URL发送给终端用户,用户可直接通过浏览器或下载工具获取文件。
方法2:导出至云存储并生成访问链接(云环境Databricks适用)
如果你的Databricks部署在AWS/Azure/GCP,可先将CSV复制到对应云存储服务(如S3、ADLS、GCS),再生成该存储服务的临时签名URL分享给用户。示例代码(以ADLS为例):
# 复制File Store文件到ADLS挂载点 dbutils.fs.cp("/FileStore/你的文件名称.csv", "/mnt/adls/目标路径/你的文件名称.csv")
之后通过云平台的API或控制台生成临时访问链接即可。
二、直接存入Windows共享文件夹
需先在Databricks集群中挂载Windows SMB共享文件夹,再将文件复制过去,步骤如下:
1. 准备工作
- 确保Databricks集群与Windows服务器处于同一网络(如VPC内网、VPN连通),集群可访问Windows服务器的SMB端口(默认445)。
- 提前获取Windows共享的用户名、密码,建议用Databricks Secrets存储敏感信息,避免硬编码。
2. 挂载SMB共享文件夹
在Notebook中执行挂载命令(替换占位符内容):
# 配置SMB信息 smb_server = "<Windows服务器IP/主机名>" shared_folder = "<共享文件夹名称>" mount_point = "/mnt/windows_shared" # 从Secrets中获取用户名密码 username = dbutils.secrets.get("你的secret scope", "smb-username") password = dbutils.secrets.get("你的secret scope", "smb-password") # 执行挂载 dbutils.fs.mount( source=f"smb://{username}:{password}@{smb_server}/{shared_folder}", mount_point=mount_point, extra_configs={"fs.smb.impl": "org.apache.hadoop.fs.smb.SMBFileSystem"} )
若集群为Linux节点,需确保已安装cifs-utils工具,可通过集群初始化脚本添加:
apt-get update && apt-get install -y cifs-utils
3. 复制CSV文件到Windows共享
挂载成功后,执行复制命令:
# 复制File Store中的CSV到挂载的Windows共享 dbutils.fs.cp("/FileStore/你的文件名称.csv", f"{mount_point}/你的文件名称.csv")
4. 验证结果
检查文件是否成功复制:
dbutils.fs.ls(mount_point)
终端用户可直接在Windows共享文件夹中查看该CSV文件。
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

