导入/导出

导入实体转换

qianmoQqianmoQ· 更新于 2026-09-27· 阅读 5 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

(新增)实体转换框架

背景

在导入过程中,需要在实体提交到数据库之前对其进行实体转换,以使其符合即将所在环境的要求。导入过程提供了实现这一目标的机制。

转换框架

转换框架提供了一种机制,可以有选择地转换实体或该实体的特定属性。

为实现这一点,该框架提供:

  • 设置转换被应用所需满足的条件的方法。
  • 条件满足后对实体执行的操作。

现有的转换框架已经支持这些功能。

引入新转换框架的原因

虽然现有框架具备转换框架的基本优势,但它对一些常用 Atlas 类型缺乏支持。这意味着使用该框架的用户必须为他们处理的每种类型仔细定义转换,这可能很繁琐且容易出错。新框架通过为一些常用类型提供内置转换来解决此问题。它还可以扩展以支持新的类型。

方案

新转换框架采用以下方式创建转换:

  • 指定条件。
  • 指定条件满足时要执行的操作。
条件

以下是内置条件。

条件类型说明
ENTITY_ALL任意/所有实体
ENTITY_TOP_LEVEL作为顶层实体的实体。同时也是 AtlasExportRequest 中指定的实体。
EQUALS实体属性等于条件中指定的值。
EQUALS_IGNORE_CASE实体属性等于条件中指定的值,忽略大小写。
STARTS_WITH实体属性以指定值开头。
STARTS_WITH_IGNORE_CASE实体属性以指定值开头,忽略大小写。
HAS_VALUE实体属性具有值。
操作
操作类型*描述**
ADD_CLASSIFICATION添加分类
REPLACE_PREFIX将以某个值开头的值替换为另一个值。
TO_LOWER将属性的值转换为小写。
SET设置属性的值
CLEAR清除属性的值

内置转换

添加分类

在导入过程中,_qualifiedName* 为 stocks@cl1 的 hive*db 实体将被添加分类 clSrcImported。

{
    "conditions": {
        "hive_db.qualifiedName": "stocks@cl1"
    },
    "action": {
        "__entity": "ADD_CLASSIFICATION: clSrcImported"
    }
}

每个导入的实体只需更改条件即可获得分类。__entity 是用于匹配实体的特殊条件。

{
    "conditions": {
        "__entity": ""
    },
    "action": {
        "__entity": "ADD_CLASSIFICATION: clSrcImported"
    }
}

要仅为顶层实体(用作导出起点的实体)添加分类,请使用:

{
    "conditions": {
        "__entity": "topLevel:"
    },
    "action": {
        "__entity": "ADD_CLASSIFICATION: clSrcImported"
    }
}
替换前缀

此操作作用于字符串值。第一个参数是用于匹配的前缀,匹配成功后,会将其替换为提供的替换字符串。

下面的示例搜索 /aa/bb/,找到后将其替换为 /xx/yy/。

{
    "conditions": {
        "hdfs_path.clusterName": "EQUALS: CL1"
    },
    "action": {
        "hdfs_path.path": "REPLACE_PREFIX: = :/aa/bb/=/xx/yy/"
    }
}
转换为小写

hdfs_path.clusterName 为 CL1 的实体,其 path 属性将被转换为小写。

{
    "conditions": {
        "hdfs_path.clusterName": "EQUALS: CL1"
    },
    "action": {
        "hdfs_path.path": "TO_LOWER:"
    }
}
清除

其 hdfspath.clusterName 属性已设置值的实体,其 _replicatedTo 属性值将被清除。

{
    "conditions": {
        "hdfs_path.clusterName": "HAS_VALUE:"
    },
    "action": {
        "hdfs_path.replicatedTo": "CLEAR:"
    }
}

其他示例

有关使用 Java 类的示例,请参阅这些测试。

评论

登录后参与评论

正在加载评论…