• Apache Atlas删除元数据实体


    Apache Atlas删除元数据实体

    数据删除的模式

    Apache Atlas中,元数据、元数据类型模型的删除模式分为两种

    • 硬删除(物理删除):硬删除是从计算机系统内删除数据,无法找回
    • 软删除(逻辑删除):是将元数据实体等标记为删除状态,但是仍然可以查询

    Apache Atlas中,元数据导入流程如下:

    ​ 定义元数据模型(type) -> 依据元数据模型,创建元数据实体(entity) -> 对元数据增删改查操作

    所以,如果要删除元数据类型模型(type),则必须删除所有对应的(entity),且软删除无法奏效,需要硬删除;可见,类型系统的定义必须慎重,否则将带来很大麻烦。

    如何配置删除模式

    配置硬删除

    1. Atlas中的删除模式物理删除逻辑删除 的重点是配置对应的DeleteHandler

    2. 通过修改atlas-application.properties配置文件的atlas.DeleteHandlerV1.impl变量,设置对应的参数值,来配置删除的模式(软删除或硬删除),然后重启atlas即可。

    3. 软删除中,atlasentity有如下状态:ACTIVE, DELETED, PURGED
      官方注释:Status of the entity - can be active or deleted. Deleted entities are not removed from Atlas store.

    4. atlas-application.properties配置信息如下:

      # Delete handler
      #
      # This allows the default behavior of doing "soft" deletes to be changed.
      #
      # Allowed Values:
      # org.apache.atlas.repository.store.graph.v1.SoftDeleteHandlerV1 - all deletes are "soft" deletes
      # org.apache.atlas.repository.store.graph.v1.HardDeleteHandlerV1 - all deletes are "hard" deletes
      #
      atlas.DeleteHandlerV1.impl=org.apache.atlas.repository.store.graph.v1.HardDeleteHandlerV1
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9

    如何清除软删除的实体

    Apache Atlas中,有没有办法在启用硬删除后删除/清除软删除的实体?

    通过如下API即可达到要求:

    Http请求方式:

    ----------------soft delete----------------
    
    curl -iv -u admin:admin -X DELETE http://localhost:21000/api/atlas/v2/entity/guid/88f13750-f2f9-4e31-89f7-06d313fe5d39
    
    ---------------- than hard----------------
    
    curl -i -X PUT  -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -u admin:admin 'http://loclahost:21000/api/atlas/admin/purge/' \
    -d '["88f13750-f2f9-4e31-89f7-06d313fe5d39"]'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Atlas Client方式:

    HashSet<String> set = new HashSet<>();
    set.add("2599fead-f70d-447c-a304-46dc64f38485");
    set.add("e13cb1eb-889c-4bde-97b8-26fca8792f14");
    atlasClientV2.purgeEntitiesByGuids(set);
    
    • 1
    • 2
    • 3
    • 4

    删除实体API

    Atlas Client API

    public EntityMutationResponse deleteEntityByGuid(String guid) 
    public EntityMutationResponse deleteEntityByAttribute(String typeName, Map<String, String> uniqAttributes) 
    public EntityMutationResponse deleteEntitiesByGuids(List<String> guids) 
    
    • 1
    • 2
    • 3

    不改变删除模式,硬删除实体

    如果想不改变删除模式,且硬删除实体,则可以调用如下接口

    1. 先标记实体为删除状态
      public EntityMutationResponse deleteEntityByGuid(String guid) 
      
      • 1
    2. 再硬删除
       atlasClientV2.purgeEntitiesByGuids(guidSet);
      
      • 1
  • 相关阅读:
    【python】(十八)python常用第三方库——pymysql
    【JavaEE初阶】计算机是如何工作的
    ELF 1技术贴|如何在Ubuntu上配置Samba服务器
    Android 12.0 SystemUI状态栏屏蔽掉通知栏不显示通知
    chrome extensions mv3通过content scripts注入/获取原网站的window数据
    POJ2367Genealogical tree题解
    使用uwsgi和gunicorn部署Django项目(智能客服系统)
    css3新特性有哪些?
    Golang高级数据结构
    VR全景技术,为养老院宣传推广带来全新变革
  • 原文地址:https://blog.csdn.net/maohuihua123/article/details/126716685