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

如何基于多独立目录的Parquet文件创建及更新Delta表?

问题解答

不能直接通过CONVERT TO DELTA指向多个独立目录完成合并转换,原因是CONVERT TO DELTA仅支持处理单一根目录下的Parquet数据,无法同时识别多个分散的目录路径。

针对你的每月更新场景,推荐两种可行方案:

方案1:给已有的Delta表增量追加每周数据

如果已经通过初始Parquet目录生成了Delta表(比如/mnt/azureblobshare/raw_data/.../table1),直接将每周更新目录的Parquet数据追加到现有Delta表即可:

方式A:使用COPY INTO(推荐,支持重复执行自动跳过已加载数据)

COPY INTO delta.`/mnt/azureblobshare/raw_data/.../table1`
FROM '/mnt/azureblobshare/raw_data/update_2024-04-01_2024-04-08/table1'
FILEFORMAT = PARQUET

方式B:使用INSERT INTO

先读取每周更新的Parquet数据,再插入到Delta表:

INSERT INTO delta.`/mnt/azureblobshare/raw_data/.../table1`
SELECT * FROM parquet.`/mnt/azureblobshare/raw_data/update_2024-04-01_2024-04-08/table1`

方案2:重新构建包含全量数据的Delta表

如果需要将历史Parquet数据和所有每周更新数据合并为一个新的Delta表,可以通过CREATE TABLE AS SELECT实现:

CREATE TABLE table1_delta
USING DELTA
PARTITIONED BY (date_partition) -- 替换为你的实际分区字段
AS
SELECT * FROM parquet.`/mnt/azureblobshare/raw_data/.../table1`
UNION ALL
SELECT * FROM parquet.`/mnt/azureblobshare/raw_data/update_2024-04-01_2024-04-08/table1`
UNION ALL
SELECT * FROM parquet.`/mnt/azureblobshare/raw_data/update_2024-04-09_2024-04-16/table1`
-- 继续追加其他每周更新目录的查询

注意事项

  • 确保所有Parquet数据的Schema完全一致,否则追加/合并时会抛出Schema不匹配错误;若存在Schema变更,需先通过ALTER TABLE ... ADD COLUMN等操作对齐Delta表Schema
  • 分区字段的定义和命名要统一,避免分区目录混乱
  • 若使用COPY INTO,可以通过添加PATTERN参数过滤特定文件,更精准地加载增量数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:06:06