元数据管理工具Atlas学习笔记之使用

背景

Atlas主要负责同步各服务(主要是Hive)的元数据,并构建元数据实体之间的关联关系,并对所存储的元数据建立索引,为用户提供数据血缘关系查看及元数据检索等功能。
Atlas在安装之初,需要手动执行一次元数据的全量导入,后续Atlas便会通过HiveHook增量同步Hive元数据,关于CentOS7下Hive的安装及使用,请参见CentOS7下Hive的安装使用

导入元数据

进入Atlas编译结果根目录,进入apache-atlas-1.2.0-hive-hook/apache-atlas-hive-hook-1.2.0/hook-bin/目录

[root@scentos target]# cd apache-atlas-1.2.0-hive-hook/apache-atlas-hive-hook-1.2.0/hook-bin/
[root@scentos hook-bin]#

执行以下脚本,过程中要输入的Atlas用户名密码默认均为admin

[root@scentos hook-bin]# ./import-hive.sh

执行结果如下:
在这里插入图片描述

查看元数据

按类型搜索

在web界面中搜索hive_table类型的元数据,会得到右边的结果,这些都是我Hive中现有的表:
在这里插入图片描述
选择某张表,可以看到其血缘关系,血缘关系由HQL执行的insert语句决定:
在这里插入图片描述

Hive元数据增量同步

首先,打开hive-cli,创建三张表:

CREATE TABLE dwd_order_info_atlas (
    `id` STRING COMMENT '订单号',
    `final_amount` DECIMAL(16,2) COMMENT '订单最终金额',
    `order_status` STRING COMMENT '订单状态',
    `user_id` STRING COMMENT '用户 id',
    `payment_way` STRING COMMENT '支付方式',
    `delivery_address` STRING COMMENT '送货地址',
    `out_trade_no` STRING COMMENT '支付流水号',
    `create_time` STRING COMMENT '创建时间',
    `operate_time` STRING COMMENT '操作时间',
    `expire_time` STRING COMMENT '过期时间',
    `tracking_no` STRING COMMENT '物流单编号',
    `province_id` STRING COMMENT '省份 ID',
    `activity_reduce_amount` DECIMAL(16,2) COMMENT '活动减免金额',
    `coupon_reduce_amount` DECIMAL(16,2) COMMENT '优惠券减免金额',
    `original_amount` DECIMAL(16,2) COMMENT '订单原价金额',
    `feight_fee` DECIMAL(16,2) COMMENT '运费',
    `feight_fee_reduce` DECIMAL(16,2) COMMENT '运费减免'
) COMMENT '订单表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

CREATE TABLE dim_base_province_atlas (
`id` STRING COMMENT '编号',
`name` STRING COMMENT '省份名称',
`region_id` STRING COMMENT '地区 ID',
`area_code` STRING COMMENT '地区编码',
`iso_code` STRING COMMENT 'ISO-3166 编码,供可视化使用',
`iso_3166_2` STRING COMMENT 'IOS-3166-2 编码,供可视化使用'
) COMMENT '省份表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

CREATE TABLE `ads_order_by_province_atlas` (
`dt` STRING COMMENT '统计日期',
`province_id` STRING COMMENT '省份 id',
`province_name` STRING COMMENT '省份名称',
`area_code` STRING COMMENT '地区编码',
`iso_code` STRING COMMENT '国际标准地区编码',
`iso_code_3166_2` STRING COMMENT '国际标准地区编码',
`order_count` BIGINT COMMENT '订单数',
`order_amount` DECIMAL(16,2) COMMENT '订单金额'
) COMMENT '各省份订单统计'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

运行结果如下:
在这里插入图片描述
然后将事先准备的order_info.txt和base_province.txt分别加载到表dwd_order_info和dim_base_province中:

hive> load data local inpath '/home/szc/order_info.txt' into table dwd_order_info_atlas;
hive> load data local inpath '/home/szc/base_province.txt' into table dim_base_province_atlas;

最后通过HQL的select语句向ads_order_by_province表中加载数据:

insert into table ads_order_by_province_atlas
select
'2021-08-30' dt,
bp.id,
bp.name,
bp.area_code,
bp.iso_code,
bp.iso_3166_2,
count(*) order_count,
sum(oi.final_amount) order_amount
from dwd_order_info_atlas oi
left join dim_base_province_atlas bp
on oi.province_id=bp.id
group by bp.id,bp.name,bp.area_code,bp.iso_code,bp.iso_3166_2;

再查看ads_order_by_province_atlas表的血缘关系:
在这里插入图片描述
以及某个字段的血缘关系:
在这里插入图片描述

遇到的问题及解决方法

在hive-cli中执行MR任务时,如果遇到hdfs://XXX文件找不到的错误,将该文件上传即可,我总共是将atlas源码目录、tez目录(没有可不管)和Hadoop目录都上传到了hdfs://home/szc/下:

[root@scentos hadoop-2.7.2]# bin/hadoop fs -copyFromLocal /home/szc/apache-atlas-sources-1.2.0/ /home/szc/
[root@scentos hadoop-2.7.2]# bin/hadoop fs -copyFromLocal /home/szc/apache-tez-0.9.1/ /home/szc/
[root@scentos hadoop-2.7.2]# bin/hadoop fs -copyFromLocal /home/szc/hadoop-2.7.2/ /home/szc/

结语

Atlas学习笔记至此结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值