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

在AWS Glue中使用PySpark无法对Hudi表执行硬删除的求助

解决Glue 4.0 + Hudi 0.12.1硬删除无效果问题

针对你在Glue环境下执行Hudi硬删除无效果且无报错的情况,可从以下几个方向排查并修正:

一、DataFrame删除方式(方法1、2)的核心问题排查

1. 确认删除用DataFrame包含完整定位字段

Hudi执行删除时,必须通过Record Key和Partition Path精准定位目标记录:

  • 你的表Record Key是uid, cust_id,Partition Path是date,因此用于删除的DataFrame必须同时包含这三个字段,字段名需完全匹配(大小写敏感)。
  • 如果DataFrame缺少其中任意一个字段,Hudi无法匹配到目标记录,会静默跳过删除操作。

2. 补全Hudi写入配置

在你的hudiOptions中添加元数据同步配置(针对Glue Catalog),确保删除操作后的元数据能及时同步,避免查询时出现数据不一致:

hudiOptions={
    "hoodie.datasource.write.table.type": "COPY_ON_WRITE",
    "hoodie.datasource.write.recordkey.field": "uid, cust_id",
    "hoodie.datasource.write.precombine.field": "insert_timestamp",
    "hoodie.datasource.write.partitionpath.field": "date",
    "hoodie.table.name": "test_table",
    # 新增Glue Catalog同步配置
    "hoodie.datasource.hive_sync.enable": "true",
    "hoodie.datasource.hive_sync.database": "你的数据库名",
    "hoodie.datasource.hive_sync.table": "test_table",
    "hoodie.datasource.hive_sync.partition_fields": "date",
    "hoodie.datasource.hive_sync.use_jdbc": "false",
    "hoodie.datasource.hive_sync.mode": "hms"
}

3. 验证写入路径一致性

确保save(path)中的S3路径与原表的存储路径完全一致,否则相当于写入了一个新表,原表数据不会被修改。

二、Spark SQL删除方式(方法3)的核心问题排查

1. 修正Delete条件与表结构匹配

你的表Record Key是uid, cust_id,但SQL中使用的是uuid = 1,若uuid不是Record Key的一部分,将无法匹配到任何记录。需调整Delete语句为:

DELETE FROM hudi_cow_nonpcf_tbl WHERE uid = '目标uid值' AND cust_id = '目标cust_id值'

2. 确保Spark配置正确加载

Glue Job的Spark配置需在Job参数中设置,而非代码内,否则配置不生效:
在Glue Job的「Job parameters」中添加以下参数:

--conf spark.serializer=org.apache.spark.serializer.KryoSerializer
--conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog
--conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension
--conf spark.sql.hive.convertMetastoreParquet=false

3. 确认表元数据正确性

确保hudi_cow_nonpcf_tbl是通过Hudi创建并同步到Glue Catalog的表,而非普通Parquet表。可通过Glue控制台查看表的「Table type」是否为Hudi。

三、通用排查步骤

  1. 查看Glue Job日志:搜索HoodieWriteClient、delete等关键词,检查是否有「Deleted X records」的日志,或是否存在「No records matched for deletion」类的警告。
  2. 验证权限:确保Glue Job执行角色拥有目标S3路径的读写权限,以及Glue Catalog的修改权限。
  3. 检查Hudi依赖兼容性:Glue 4.0默认集成Hudi 0.12.1,若你手动添加了Hudi依赖,需避免版本冲突,建议使用Glue自带的Hudi版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 07:00:19