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

如何清理Delta Lake各类表并查询非Delta表的操作用户?

查询表/视图访问用户及Databricks数据清理方案

一、查询Parquet表、视图、外部表的创建/访问用户

1. 视图(View)

  • 执行DESCRIBE EXTENDED <view_name>或SHOW CREATE TABLE <view_name>,结果中的Created By字段会显示创建用户,同时能获取创建时间。
  • 要追踪访问记录,需依赖Databricks审计日志,查询系统表system.access.audit过滤相关操作:
SELECT user_identity.email, operation_name, object_name, timestamp
FROM system.access.audit
WHERE object_name = '<你的视图名>'
  AND operation_name IN ('SELECT', 'CREATE VIEW', 'ALTER VIEW')
ORDER BY timestamp DESC

2. Parquet表(内部/外部)

  • 内部Parquet表:DESCRIBE EXTENDED <表名>可查到创建者,但无访问历史,同样需要通过审计日志追踪。
  • 外部Parquet表:除了用DESCRIBE EXTENDED获取创建者信息,还可以结合云存储访问日志(如S3、ADLS日志),与Databricks审计日志交叉验证访问记录。

3. 外部表(非Parquet)

逻辑与外部Parquet表一致,通过DESCRIBE EXTENDED查看创建者,利用审计日志+云存储日志组合追踪访问用户。

二、更优的Databricks数据清理方案

1. 基于审计日志的统一访问分析

不管是Delta表、Parquet表还是视图,审计日志是最可靠的访问记录来源。可以创建定时任务,定期分析system.access.audit表,生成各对象的访问报表,标记长期未被访问的对象。

2. 利用Unity Catalog做生命周期管理

如果使用Unity Catalog,可直接为表/视图设置生命周期规则:

  • Delta表:设置属性自动清理旧日志和已删除文件:
ALTER TABLE <delta表名> SET TBLPROPERTIES (
  delta.logRetentionDuration = '7 days',
  delta.deletedFileRetentionDuration = '1 days'
)

还可给表添加备注标记清理阈值,比如COMMENT '6个月未访问则删除'。

  • Parquet/外部表:结合Unity Catalog的权限管理,配合审计日志批量清理长期无访问的对象,同时删除对应存储路径的文件。

3. 分层清理策略

  • 临时对象:给临时表/视图打标签,用Databricks Jobs每日清理创建超过7天的临时对象。
  • 归档对象:对需要保留但不再使用的数据,归档到低成本存储(如S3 Glacier、ADLS Archive),删除原表后保留指向归档路径的外部表。
  • 删除前验证:删除前通过审计日志确认N天内无访问记录,或给相关用户发送通知,避免误删。

4. 自动化清理脚本

编写Python或SQL脚本,结合Databricks API实现:

  • 遍历Metastore中的所有表/视图,获取对象类型、创建时间、最后访问时间(从审计日志提取)。
  • 对符合清理条件的对象,自动执行DROP TABLE/DROP VIEW命令,并用dbutils.fs.rm删除外部存储路径的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:33:00