apache atlas 数据治理

1. 安装

在安装完ambari平台后,可以在可添加服务中选择atlas安装,其它相关安装事项参见https://blog.csdn.net/g511266804/article/details/106489935/

在这里插入图片描述

2. UI界面

atlas提供了可视化的界面用于查询某一type下的所有实体、血缘关系等,如type为hive_table的实体共有123个,点击查找后,可以选择一个实体查看其定义信息、血缘关系等。血缘关系通常定义于process类别中。
在这里插入图片描述
在这里插入图片描述

3. api调用

  • atlas提供了丰富的api接口供开发人员使用,主要包括查询(实体、血缘)与创建(实体、血缘)两大功能,部分血缘关系atlas可自动获取,例如在hive数据库中使用如下sql命令create table bbb1 as select * from bbb limit 10,此时atlas将自动获取到实体bbb、bbb1的属性信息,以及两者的关系,即该sql语句。
  • 当部分表的关系是通过某些代码处理获取的时候,可以通过api的post方法将关系提交到atlas中
import json
import requests
from src.config.load_config_map import get_config_conf


class AtlasAction(object):
    def __init__(self):
        self.config_map = get_config_conf()
        self.ip = self.config_map["atlas_ip"]
        self.port = self.config_map["atlas_port"]
        self.user = self.config_map["atlas_user"]
        self.password = self.config_map["atlas_password"]
        # 查询type为:hive_table下的所有实体
        self.url_hive_table = \
            'http://%s:%s/api/atlas/v2/search/basic?typeName=hive_table' \
            % (self.ip, self.port)
        # 根据上述查询获取的实体的guid查询该实体的血缘关系
        self.url_lineage = 'http://%s:%s/api/atlas/v2/lineage/%s'
        self.url_table = 'http://%s:%s/api/atlas/v2/search/basic?' \
                         'query=%s&typeName=%s'
        self.url_add_entity = 'http://%s:%s/api/atlas/v2/entity'
        self.url_add_lineage = 'http://%s:%s/api/atlas/v2/entity/bulk'
        self.url_define_entity = 'http://%s:%s/api/atlas/v2/entity/bulk?' \
                                 'minExtInfo=yes&guid=%s'

    def get_type_entity(self):
        """
        获取实体信息
        """
        req = requests.get(self.url_hive_table,
                           auth=(self.user, self.password), verify=False)
        data = json.loads(req.text)
        return data

    def get_one_table(self, table_name, type_name):
        """
        根据name查询某张表
        """
        req = requests.get(self.url_table % (self.ip, self.port,
                                             table_name, type_name),
                           auth=(self.user, self.password), verify=False)
        data = json.loads(req.text)
        return data

    def get_lineage_info(self, guid):
        """
        查询某一实体的血缘
        """
        req = requests.get(self.url_lineage % (self.ip, self.port, guid),
                           auth=(self.user, self.password), verify=False)
        data = json.loads(req.text)
        return data

    def get_entity_define_info(self, guid):
        """
        查询某个实体的定义信息
        """
        req = requests.get(self.url_define_entity % (self.ip, self.port, guid),
                           auth=(self.user, self.password), verify=False)
        data = json.loads(req.text)
        return data

    def create_one_entity(self, data_info):
        """
        创建某一实体信息
        """
        req = requests.post(self.url_add_entity % (self.ip, self.port),
                            auth=(self.user, self.password), verify=False,
                            json=data_info)
        status_code = req.status_code
        return_data = None
        if 200 == status_code:
            return_data = json.loads(req.text)
        return return_data

    def create_one_lineage(self, data_info):
        """
        创建两个实体之间的血缘关系,需要获取两个实体的guid信息
        """
        req = requests.post(self.url_add_lineage % (self.ip, self.port),
                            auth=(self.user, self.password), verify=False,
                            json=data_info)
        status_code = req.status_code
        return_data = None
        if 200 == status_code:
            return_data = json.loads(req.text)
        return return_data
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值