导入/导出
导入实体转换
登录后可跨设备保存划线和私人笔记登录
(新增)实体转换框架
背景
在导入过程中,需要对实体进行转换,以便在实体提交到数据库之前对其进行修改。这些修改是为了让实体符合其将要驻留的环境而必须进行的。导入过程提供了一种实现该目的的机制。
转换框架
转换框架提供了一种机制,可以有选择地转换实体或该实体的特定属性。
为实现这一点,框架提供了:
- 设置一个条件,只有该条件得到满足时才应用转换。
- 条件满足后对实体执行的操作。
现有的转换框架已经支持这些功能。
引入新转换框架的原因
虽然现有框架提供了转换框架的基本优势,但它并不支持一些常用的 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:"
}
}清除
对于已设置 hdfs*path.clusterName 值的实体,其 replicatedTo 属性值将被清除。
{
"conditions": {
"hdfs_path.clusterName": "HAS_VALUE:"
},
"action": {
"hdfs_path.replicatedTo": "CLEAR:"
}
}其他示例
有关使用 Java 类的示例,请参阅这些测试。
评论
登录后参与评论
正在加载评论…
KnowForge