为了保证DataHub中的元数据的有效性、正确性,需要及时将不正确的、废弃的元数据进行删除。
本文主要讲解在DataHub中如何删除元数据?
1.DataHub如何删除元数据
1.1.通过Rest.li API 删除
1.1.1. 软删除 soft delete
DataHub针对每个实体都关联一个特殊的方面Aspect com.linkedin.common.Status
,来表示实体的生命周期状态。
要使一个实体不能在DataHub UI中查看、搜索,只需要将com.linkedin.common.Status
Aspect的removed
属性设置为true
即可。
其实这和关系数据库中,通过一个字段标识一条记录是否被删除是一样的,即通过打标记对实体对象进行软删除。
注意:通过Rest.li API,只能针对实体进行软删除
使用示例如下:
删除数据流urn:li:dataFlow:(airflow,datahub_lineage_backend_demo,prod)
{
"entity": {
"value": {
"com.linkedin.metadata.snapshot.DataFlowSnapshot": {
"aspects": [
{
"com.linkedin.common.Status": {
"removed": true
}
}
],
"urn": "urn:li:dataFlow:(airflow,datahub_lineage_backend_demo,prod)"
}
}
}
}
- 将删除的实体恢复
1.1.2. 硬删除 hard delete
curl --location --request POST 'http://172.25.21.188:8080/entities?action=delete' \
--header 'Content-Type: application/json' \
--data-raw '{
"urn": "urn:li:dataFlow:(airflow,datahub_lineage_backend_demo,prod)"
}'
1.2.通过 DataHub CLI命令删除
1.2.1. Delete By Urn
- 默认行为是软删除 Soft Delete
以下命令是针对实体进行软删除,达到的效果 和 通过Rest.li API针对实体进行软删除 一样。
这将实体的Status方面设置为Removed,这将隐藏实体及其所有方面,不让UI返回。
datahub delete --urn "<my urn>"
datahub delete --urn "<my urn>" --soft
- 硬删除 Hard Delete
在物理上删除实体所有方面的的信息,且操作无法撤消,
因此操作时需要谨慎,只有在确定要删除与此实体关联的所有数据后才执行此操作。- 添加
-n
或--dry-run
参数:在发出最终的delete命令之前执行一次演练 - 添加
-f
或--force
参数:跳过确认
- 添加
注意:确保urn
放在""
中,以避免命令行终端针对命令进行了错误的解读,如datahub delete --urn "urn:li:dataFlow:(airflow,datahub_lineage_backend_demo,prod)"
1.2.2. Delete using Broader Filters 过滤删除
- 删除DEV环境中的所有数据集
datahub delete --env DEV --entity_type dataset
- 删除PROD环境中的所有hive数据集
datahub delete --env PROD --entity_type dataset --platform hive
- 删除匹配查询的所有dataJob
datahub delete --entity_type dataJob --query "test" -n
目前功能存在BUG,有时删除会报错。
1.2.3. Rollback Ingestion Batch Run
删除元数据的第二种方法是使用一个摄取run-id
来标识实体(以及受影响的方面)。每当你运行datahub ingest -c…
,该运行所接收的所有元数据将具有相同的run-id
。 详见解释参见官网
# 查看最近一段时间运行的元数据摄取
datahub ingest list-runs
# 查看某一次元数据摄取操作的数据
datahub ingest show --run-id <run-id>
datahub ingest rollback --dry-run --run-id <run-id>
# to rollback all aspects added with this run and all entities created by this run
datahub ingest rollback --run-id <run-id>