Apache Atlas通过JSON文件添加Type
Atlas预定义Type
在Atlas有许多预定义的Type,都放在了addons/models文件夹下。在Atlas启动时会检查这些文件定义的Type,如果未创建则会自动创建。
同时Atlas还提供版本-补丁的机制,在启动时找出有效的补丁并执行。
以Hive的1030-hive_model.json文件举例,其中定义了各种类型的Type。
如果我们要修改Type定义,只需要在patches下添加补丁文件。
下面这个补丁文件就是如果hive_column的版本为1.0,则添加一个属性,完成后将hive_column的版本更新为1.1。
再看当前的hive_column版本为1.3,所以上面的补丁不会生效。
Atlas的启动时检查功能为开发者创建Type和修改Type提供了极大的便利。
启动-检查过程
在Atlas启动过程中看到,是AtlasTypeDefStoreIntializer.loadBootstrapTypeDefs()实现这个功能。
函数定义:
(从该函数的实现发现,文件和文件夹前的四位数字是因为Atlas提供了按顺序检查的功能,方便用户排序用。只要目录结构正确,会检查所有JSON文件)
自定义Type测试
举个实例,继承Atlas的rdbms相关的Type,创建mysql相关的Type。
2010-rdbms_model.json:
第一步:创建2020-mysql_model.json。
第二步:文件内将所有"rdbms"字符串替换为"mysql"。
第三步:entityDefs下所有Type的继承类从DateSet改为对应rdbms的Type。
第四步:entityDefs下所有的Type的attributeDefs清空,因为属性从rdbms中继承来了。
至此应该是这样的(字符串替换后,注意黑箭头的an需要修改为a):
第五步:最后我们加一个名为wjzhang_mysql_test_attr的新属性给mysql_instance,区别于rdbms_instance,看看是否成功(后续要修改需要用API或者补丁,你也可以跳过这一步)。
第六步:将该文件放到Atlas的文件夹下,如我服务器上的/usr/hdp/2.6.4.0-91/atlas/models,或我本地的E:\atlas\deploy\models。重启Atlas。
可以看到一切成功。