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

Databricks中如何向已有Delta表导入ADLS Gen2的Parquet数据

问题解答

1. Landing Zone Parquet数据导入目标Delta表操作方法

操作前先做前置校验:确认Landing Zone中Parquet文件的字段名、字段顺序、数据类型和你创建的externaltables.actv_snap_view表结构对齐,你当前建表所有字段均为String类型,需确认源数据无类型不匹配问题。
你可以选择以下任意一种方式完成导入:

  • 方式1:使用COPY INTO命令(推荐,支持首次全量导入+后续增量同步,自带幂等性,不会重复加载已经处理过的文件)
    执行以下SQL即可,注意将路径替换为你Landing Zone中对应Parquet文件的实际存储路径,如果没有提前挂载Landing Zone容器到DBFS,也可以直接替换为ABFSS协议的原生ADLS Gen2路径:
    COPY INTO externaltables.actv_snap_view
    FROM '/mnt/Storage/landingzone/actv_snap' -- 替换为实际Parquet路径,ABFSS路径格式示例:abfss://landingzone@<你的存储账号>.dfs.core.windows.net/actv_snap
    FILEFORMAT = PARQUET
    FORMAT_OPTIONS ('mergeSchema' = 'true')
    COPY_OPTIONS ('mergeSchema' = 'true');
    
  • 方式2:使用INSERT语句写入(适合一次性全量导入场景)
    -- 全量覆盖写入用INSERT OVERWRITE,追加写入用INSERT INTO
    INSERT OVERWRITE externaltables.actv_snap_view
    SELECT 
      id,
      mbr_id,
      typ_id,
      strt_dttm,
      otcome_typ_id,
      cdc
    FROM parquet.`/mnt/Storage/landingzone/actv_snap`; -- 替换为实际Parquet路径
    

    注意:这里不要直接用SELECT *,显式指定字段可以避免源Parquet字段顺序和目标表不一致导致的数据错位问题。

  • 方式3:使用PySpark API写入
    如果你习惯在Databricks Notebook中用PySpark操作,可以执行以下代码:
    # 读取源Parquet数据
    source_df = spark.read.parquet("/mnt/Storage/landingzone/actv_snap") # 替换为实际路径
    # 写入目标Delta表,overwrite为全量覆盖,append为追加
    source_df.write.mode("overwrite").saveAsTable("externaltables.actv_snap_view")
    

2. 数据写入后的底层存储位置

你创建的是外部Delta表,建表时已经显式指定了LOCATION '/mnt/Storage/Bronze/actv_snap_view'参数,因此:

  • 表的元数据(表结构、权限信息等)存储在Databricks关联的元存储中
  • 所有实际业务数据(Delta格式的Parquet数据文件、记录版本变更的_delta_log事务日志目录),全部存储在你指定的ADLS Gen2 Bronze容器的actv_snap_view路径下,不会占用Databricks工作区的默认托管存储
  • 后续如果执行DROP TABLE删除该表,只会删除元存储中的表元数据,不会删除Bronze容器中存储的实际数据文件

补充说明:只有建表时不指定LOCATION参数创建的托管Delta表,数据才会默认存储在Databricks工作区配置的DBFS托管存储路径下,删除表时会同步删除底层数据文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:12:13