元数据与数据治理|Apache Atlas API使用入门(第十一篇)

版权声明:更多信息请关注 wwws.shinians.com 官网 https://blog.csdn.net/zzhuan_1/article/details/86238077

一 概念讲解

Apache atlas Api主要是对Type,Entity,Attribute这3个构件的增删改查操作(Api和Admin UI供外部调用,其它的被封装或在 配置文件中)

Atlas Type System
     Atlas 类型系统,Atlas 允许用户为他们想要管理的元数据对象定义一个模型。该模型由称为 “类型” 的定义组成。被称为 “实体” 的 “类型” 实例表示被管理的实际元数据对象。类型系统是一个组件,允许用户定义和管理类型和实体。由 Atlas 管理的所有元数据对象(例如Hive表)都使用类型进行建模,并表示为实体。如果要在Atlas中存储新类型的元数据,需要了解类型系统组件的概念。

参考链接:https://blog.csdn.net/qq_36096641/article/details/83502079

Type:(类:Persion)

Atlas中的 “类型” 定义了如何存储和访问特定类型的元数据对象。类型表示了所定义元数据对象的一个或多个属性集合。具有开发背景的用户可以将 “类型” 理解成面向对象的编程语言的 “类” (Class定义的或关系数据库的 “表模式”(table schema

可以通过该API获取Atlas的所有类型:http://127.0.0.1:21000/api/atlas/v2/types/typedefs

下面通过该API获取hive_table类型的定义:http://atlas:21000/api/atlas/v2/types/typedef/name/hive_table
 

Entity:(实体:new Persion()  张三)

Atlas 中的一个 “实体” 是类 “type” 的特定值或实例, 因此表示特定的

现实世界中的元数据对象。回指我们的面向对象的类比

编程语言, “instance” 是某个 “Class” 的 “Object”。

Attribute:(ExtMap额外更多的属性?暂且这么理解 ?)

属性定义在复合 metatypes 中, 如Class和Struct。

可以简单将属性称为具有名称和 metatype 值。然而

Atlas 中的属性有更多的属性来定义与type system相关的更多概念。

二  Demo应用

Type

1.  使用Type定义一个Hive table,而且有一些Attribute

这跟java类的定义很相似,也跟json数据定义类似。需要注意的几点:

Atlas 中的类型由 “name” 唯一标识
每个type 具有 一个metatype。metatype 表示该模型在 Atlas 中的类型。
Atlas 有以下 metatypes:

  1. 基本 metatypes: 如 Int、字符串、布尔值等。
  2. 枚举 metatypes: TODO
  3. 集合 metatypes: 例如阵列、地图
  4. 复合 metatypes: 如类、结构、特性

4.类型可以从名为 “supertype” 的父类型 “extend” 。凭借这一点, 它将得到还包括在超类型中定义的属性。这使模型设计家以在一组相关类型中定义公共属性等。这再次类似于面向对象语言如何定类的超级类的概念。在本示例中, 每个配置单元表都从预定义的超类型称为”DataSet”。有关此预定义的更多详细信息类型将在以后提供。在 Atlas 中的类型也可以从多个超级类型扩展。 
5.具有 “Class”、”Struct” 或 “Trait” metatype 的类型可以有一个集合 
属性。每个属性都有一个名称 (例如 “name”) 和其他一些关联的 
性能。属性可以引用为使用表达式。

从上面的说明看,atlas type似乎具有和java中class类似的性质,比如继承。如果我们按照java中对象关系的角度理解,会更容易理解一些。

Entity

2 .一个Entity的定义

上面的id就是Entity的id。顺着java 对象的思路,Entity结构也是比较容易理解的。

三、常用Rest API

  Atlas REST API 参考地址:http://atlas.apache.org/api/v2/

1.获取所有的types

GET http://ip:port/api/atlas/types

GET http://ip:port/api/atlas/types?type=STRUCT|CLASS|TRAIT

如下图

{
	"requestId": "pool-1-thread-4 - 088d30a2-870a-4257-9c22-98885de21224",
	"count": 109,
	"results": ["hive_principal_type", "AtlasGlossaryTermRelationshipStatus", "file_action", "AtlasGlossaryTermAssignmentStatus", "aws_tag", "aws_cloud_watch_metric", "aws_s3_access_policy", "hive_order", "hive_serde", "aws_s3_bucket_lifeCycleRule", "fs_permissions", "DataSet", "Process", "hive_table", "avro_primitive", "storm_node", "Referenceable", "jms_topic", "falcon_feed", "rdbms_column", "Asset", "hbase_column_family", "avro_collection", "hive_column", "avro_schema", "__AtlasUserSavedSearch", "avro_record", "__internal", "storm_bolt", "avro_type", "falcon_cluster", "aws_s3_object", "aws_s3_bucket", "fs_path", "falcon_feed_replication", "falcon_process", "rdbms_foreign_key", "avro_fixed", "falcon_feed_creation", "AtlasGlossaryCategory", "__AtlasUserProfile", "aws_s3_pseudo_dir", "hive_db", "sqoop_dbdatastore", "hbase_namespace", "avro_field", "hive_process", "hbase_column", "rdbms_instance", "hbase_table", "rdbms_table", "storm_topology", "Infrastructure", "storm_spout", "rdbms_db", "kafka_topic", "AtlasGlossary", "hive_storagedesc", "hdfs_path", "AtlasGlossaryTerm", "sqoop_process", "hive_column_lineage", "rdbms_index", "avro_enum", "storm_topology_nodes", "AtlasGlossaryTranslation", "avro_schema_associatedEntities", "AtlasGlossaryCategoryHierarchyLink", "aws_s3_bucket_aws_s3_pseudo_dirs", "AtlasGlossaryTermAnchor", "AtlasGlossaryCategoryAnchor", "hbase_table_column_families", "AtlasGlossaryValidValue", "falcon_feed_cluster", "hive_process_column_lineage", "AtlasGlossaryAntonym", "AtlasGlossaryPreferredTerm", "AtlasGlossarySynonym", "avro_record_fields", "rdbms_table_foreign_key", "aws_s3_object_avro_schema", "hbase_column_family_columns", "kafka_topic_avroSchema", "rdbms_table_indexes", "AtlasGlossarySemanticAssignment", "AtlasGlossaryReplacementTerm", "rdbms_foreign_key_key_columns", "aws_s3_pseudo_dir_avro_schema", "AtlasGlossaryRelatedTerm", "process_dataset_outputs", "__AtlasUserProfile_savedsearches", "falcon_cluster_feed_creation", "dataset_process_inputs", "rdbms_foreign_key_table_references", "aws_s3_pseudo_dir_aws_objects", "rdbms_instance_databases", "rdbms_foreign_key_column_references", "hbase_table_namespace", "rdbms_db_tables", "avro_field_types", "falcon_cluster_process", "hive_table_storagedesc", "hive_table_columns", "AtlasGlossaryIsARelationship", "rdbms_index_columns", "hive_table_partitionkeys", "rdbms_table_columns", "AtlasGlossaryTermCategorization", "hive_table_db"]
}

(2)获取某一个type:

GET http://ip:port/api/atlas/types / {type_name}

(3)创建新type:

POST http://ip:port/api/atlas/type

(4)创建新entity:

http://ip:port/api/atlas/entities

entities:是一个数组

(5)获取一个entity:

GET http://ip:port/api/atlas/ entities / {guid}

guid:entity的id

(6)获取一个包含某个attribute(属性)的entity:

GET http://ip:port/api/atlas/ entities?type={type_name}&p roperty={unique_attribute_name}&value={unique_attribute_value

(7)更新entity的一个attribute属性:

POST http://ip:port/api/atlas/ entities/{GUID}

response 都是一个json结构,跟solr api是类似的。
 

 四、关注  Rest API 接口

参考链接:https://blog.csdn.net/cafebar123/article/details/79944247 

猜你喜欢

转载自blog.csdn.net/zzhuan_1/article/details/86238077