Type System
一、Type
(可以理解为 “类”) –> class
定义了如何存储和访问特定类型的元数据对象,表示了 所定义 的元数据对象一个或多个的集合
可以通过该API获取Atlas的所有类型:http://atlas:21000/api/atlas/v2/types/typedefs
下面通过该API获取hive_table类型的定义:http://atlas:21000/api/atlas/v2/types/typedefs/typedef/name/hive_table
下面是在Atlas中定义的一个名为Hive表的类型,该类型包含了以下的属性:
1 | Name: hive_table |
- atlas中每个类型通过唯一名字来标识
- 每个类型都有一个元类型
- 基本元类型: Int,String,Boolean等
- 枚举元类型
- 集合元类型:Array,Map
- 复合元类型:Class,Struct,Trait
- entity & classification(分类) 可以继承其他类型,被继承的类型成为superType。类型的集成可以获得超类型的属性,可以将公共属性定义在超类型中。例hive_db定义在DataSet中。
- 具有‘entity’,‘Struct’(结构),‘classification’ or ‘relationship’元类型的类型可拥有一个属性集合
二、Entity
“类” Type的特定值或实例 –>实际的元数据对象,即 在‘default’ 库中 有‘customers’的hive表,该表就是hive表类型的一个实体
1 | guid: "9ba387dd-fa76-429c-b791-ffc338d3c91f" |
- 每个实体类型的实例都一个唯一标识,即GUID,有altas定义元数据对象时生成。
- 一个实体的实例值是一个map,该map的key对应类型中定义属性名,value为属性值。
- 属性的取值必须与类型中定义的属性类型保持一致。
三、Attributes
定义了Type和Entity的具体属性
一个属性拥有以下的内容:
name : string ,
typeName : string ,
isOptional : boolean ,
isIndexable : boolean ,
isUnique : boolean ,
cardinality : enum
- name - 属性的名称。
- typeName - 属性的元类型名称。
- isOptional - 这个标识了建模的考虑。如果一个属性被标记为复合的(composite),那么就表明这个属性不能脱离包含它的实体而存在。比如一个hive表的字段不能脱离表存在。一个复合属性必须在Atlas与包含的实体一起创建。
- isIndexable - 标识是否在该属性上建立了索引
- isUnique - 是否时唯一索引。任何标记设置为真的属性,都可以作为区分实体的主键。
- multiplicity - 值是该属性是必须的,可选的,多值的其中之一。
系统特殊类型
- Referenceable:该类型表示,它的所有实体都可以通过叫做qualifiedName的唯一属性查询到。
- Asset: 该类型扩展自Referenceable,并增加了诸如name,description和owner等属性。name是必选属性,其他为可选属性。Referenceable和Asset的目的是为建模者在定义和查询他们自定义类型时增强一致性。具有这些固定的属性集应用程序和用户界面就可以基于约定做出关于默认情况下它们可以期望类型的属性的假设。
- Infrastructure:该类型扩展自Asset,一般可作为基础上设施元数据对象(如集群,主机等)的公用超类型。
- DataSet:该类型扩展自Referenceable。概念上,它用于描述一种存储数据的类型。在Atlas中,hive表,hbase表等都可以从DataSet扩展而来。从DataSet类型扩展而来的类型都将拥有一个模式(schema),即有一个属性定义了该数据集的列(字段或属性),比如hive表中columes字段。所有DataSet扩展类型的实体都会参与数据转换(transformation),而这种转换会通过Atlas的血缘图记录下来。
- Process:该类型扩展自Asset。概念上,它用于描述任何数据转换的操作。例如,一个ETL处理过程可以是Process扩展类型的实例,而该ETL处理过程可将原始数据转换成存储到一个存放聚合数据的hive表中。Process类型有两个特别的属性,输入和输出。输入和输出都是DataSet实例数组类型的。因此,一个Process类型的实例可用输入和输出属性来展示数据的血缘关系。