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

如何将在线XLS文件定期导入Azure Databricks生成Delta表?

自动摄取在线XLS文件到Azure Databricks并生成Delta表

核心思路

直接通过Databricks代码拉取固定URL的在线XLS文件,在集群内完成数据解析、转换,最终写入Delta表,再通过Databricks Jobs实现每周自动调度,完全替代手动操作。

具体实现步骤

1. 编写数据处理代码(Notebook)

创建一个Databricks Notebook,写入以下逻辑:

方式1:内存直接处理(推荐,无需临时存储)

import requests
from io import BytesIO
import pandas as pd

# 替换为你的固定XLS文件URL
XLS_FIXED_URL = "https://your-target-url/weekly_data.xls"

# 拉取在线XLS文件内容
resp = requests.get(XLS_FIXED_URL)
xls_io = BytesIO(resp.content)

# 读取XLS数据(可指定sheet_name,默认读第一个sheet)
pd_df = pd.read_excel(xls_io, sheet_name=0, header=0)

# 转换为Spark DataFrame
spark_df = spark.createDataFrame(pd_df)

# 可选:数据清洗/转换(根据你的业务需求调整)
# spark_df = spark_df.dropDuplicates().na.fill(0)

# 写入Delta表(支持DBFS路径或Unity Catalog表)
# 写入DBFS路径
spark_df.write.mode("overwrite").format("delta").save("/dbfs/delta/weekly_xls_data")
# 或者注册为Unity Catalog管理的表
# spark_df.write.mode("overwrite").format("delta").saveAsTable("main.default.weekly_xls_table")

方式2:先存储到DBFS再处理(如果需要保留原始文件)

如果需要留存原始XLS文件到DBFS,可改用以下代码(需确保集群安装了Spark Excel依赖):

import requests

XLS_FIXED_URL = "https://your-target-url/weekly_data.xls"
DBFS_STORAGE_PATH = "/dbfs/raw/weekly_xls/weekly_data.xls"

# 拉取并保存到DBFS
with open(DBFS_STORAGE_PATH, "wb") as f:
    f.write(requests.get(XLS_FIXED_URL).content)

# 用Spark读取DBFS上的XLS文件
spark_df = spark.read.format("com.crealytics.spark.excel") \
    .option("header", "true") \
    .option("inferSchema", "true") \
    .load("dbfs:/raw/weekly_xls/weekly_data.xls")

# 后续写入Delta表逻辑同方式1
spark_df.write.mode("overwrite").format("delta").saveAsTable("main.default.weekly_xls_table")

注意:使用Spark Excel读取时,需在集群的Libraries中添加Maven依赖:com.crealytics:spark-excel_2.12:0.13.5(版本需匹配你的Spark版本)。

2. 配置自动化调度(Databricks Jobs)

  1. 登录Azure Databricks控制台,进入Jobs页面
  2. 点击Create Job,配置任务信息:
    • 任务类型选择Notebook,关联你编写的处理Notebook
    • 选择执行集群(可使用Serverless集群或现有常规集群)
  3. 切换到Schedule标签,选择Recurring:
    • 设置调度频率为Weekly,指定每周运行的具体时间(比如每周一凌晨1点)
  4. 保存并启用Job,系统会自动按设定时间执行数据摄取流程

关键注意事项

  • 确保Databricks集群有访问外部URL的权限(如果是VNet部署的集群,需配置网络规则允许访问目标XLS文件的域名)
  • 若XLS文件格式有变动(比如sheet名称、列结构),需同步调整代码中的读取参数
  • 写入Delta表时,mode("overwrite")会覆盖全表,若需要增量更新,需添加主键判断逻辑实现UPSERT

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:52:27