概述
类型系统Type System是Atlas最核心的组件之一,用户可以通过类型系统对数据资产进行分类、定义,然后用Ingest/Export组件添加元数据或输出元数据变化。对外,其他系统可以通过REST API或Kafka Message与Atlas进行集成。
这里,总结Atlas 类型系统与Rest API。
Atlas 类型系统
Type
Type(类型)在Atlas中代表了一类数据,如hdfs_path
Type,hive_db
Type,hive_table
Type,hive_column
Type。Type,简单理解,可理解成Java 面向对象中的类Class,定义了一类数据。
Entity
Entity(实体)是某个Type(类型)的Instance(实例)。类似面向对象中某一Class的具体Object。
举例:
- Hive有一个
default
数据库,则在Atlas中,该库default
将是hive_db类型的一个Entity。 - Hive在
default
数据库中有一个表叫customers
,则在Atlas中,该表customers
将是hive_table类型的一个Entity。 - Hive在
default
数据库customers
表中有一个列叫user_name
,则在Atlas中,该列user_name
将是hive_column类型的一个Entity。
Atlas WebUI中可根据某一Type类型Search一类Entity。
注意: 每一个Entity都有一个GUID。在Atlas WebUI中,点击某个Entity,在浏览器URL框中即可看到该GUID。
Attribute
类型系统中,Type和Entity都是有属性的。Attribute定义了Type和Entity的具体属性。
除此之外,Atlas内部还自带了一些预定义类型,如Referenceable Type
,Asset Type
,Infrastructure Type
,DataSet Type
,Process Type
等。
Atlas Rest API
总结部分Rest API,其他API查看Atlas官网Atlas Rest API
AdminREST
- 查看Atlas Metadata Server节点状态
GET
/admin/status
curl -s -u admin:admin "http://node2:21000/api/atlas/admin/status"|jq
ACTIVE:此实例处于活跃状态,可以响应用户请求。
PASSIVE:此实例处于被动状态。它会将收到的任何用户请求重定向到当前ACTIVE实例。
BECOMING_ACTIVE:此实例正在转换为ACTIVE实例,在此状态下无法为用户提供请求服务。
BECOMING_PASSIVE:此实例正在转换为PASSIVE实例,在此状态下无法为用户提供请求服务。
注意:正常情况下,只有一个应该为ACTIVE状态,其他实例均为PASSIVE状态。
- 查看Atlas版本和描述
GET
/admin/version
curl -s -u admin:admin "http://node2:21000/api/atlas/admin/version"|jq
DiscoveryREST
- 基本搜索
GET
/v2/search/basic
#查询所有Hive表
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/search/basic?typeName=hive_table"|jq
#查询所有Hive表,且包含某一关键字
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/search/basic?query=dim_channel&typeName=hive_table"|jq
- DSL 搜索
GET
/v2/search/dsl
#DSL方式查询Hive表
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/search/dsl?typeName=hive_table&query=where%20name%3D%22dim_channel%22"|jq
注意:URL中特殊字符编码。
- 全文检索
GET
/v2/search/fulltext
#全文检索方式查询
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/search/fulltext?query=where%20name%3D%22dim_channel%22"|jq
TypesREST
- 检索所有Type,并返回所有信息
GET
/v2/types/typedefs
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/types/typedefs"|jq
- 检索所有Type,并返回最少信息
GET
/v2/types/typedefs/headers
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/types/typedefs/headers"|jq
如:
{
"guid": "77edd2dc-cc4e-4980-ae65-b3dd72cf5980",
"name": "dim_table",
"category": "CLASSIFICATION"
},
{
"guid": "9d6c9b56-b91b-45f5-9320-d10c67736d05",
"name": "fact_table",
"category": "CLASSIFICATION"
}
.......
EntityREST
- 批量根据GUID检索Entity
GET
/v2/entity/bulk
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/entity/bulk?minExtInfo=yes&guid=bcbc196a-74c1-45ff-ac6f-f749ec8fd9b0"|jq
- 获取某个Entity定义
GET
/v2/entity/guid/{guid}
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/entity/guid/bcbc196a-74c1-45ff-ac6f-f749ec8fd9b0"|jq
- 获取某个Entity的TAG列表
GET
/v2/entity/guid/{guid}/classifications
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/entity/guid/bcbc196a-74c1-45ff-ac6f-f749ec8fd9b0/classifications"|jq
LineageREST
- 查询某个Entity的Lineage
GET
/v2/lineage/{guid}
curl -s -u admin:admin "http://node2:21000/api/atlas/v2/lineage/bcbc196a-74c1-45ff-ac6f-f749ec8fd9b0"|jq