想象你刚被任命为一座城市档案局的新馆长。推开门,十万份卷宗堆在地上,没有编号、没有封面卡片、没有分类索引。税务局的纳税记录、医院的病例档案、电商平台的订单合同……全都混在一起。有人问你:“帮我查一下去年 3 月张某某的缴费记录。”你只能蹲在地上翻到天黑。这座档案馆缺的不是卷宗,而是一整套管理系统——给每份卷宗贴标签、编目录、记录流转过程、制定借阅规章。 Apache Atlas 就是大数据世界里的这套“档案馆管理系统”。它给每一份数据资产制作“档案卡片”(元数据),记录每一份数据从哪来、到哪去(血缘追踪),给敏感数据贴上“密级标签”(数据分类),还通过一套标准的“服务窗口”(API)让所有系统和它对接。无论你的数据管道多么复杂,Atlas 都能让每一份数据的“身世”清清楚楚。这篇文章,我们就用“档案馆”来串起 Atlas 的全部核心概念。
掌握 Apache Atlas,你就拥有了让数据管道“透明可控”的能力——这是数据工程师从“搬数据”升级为“管数据”的分水岭,也是数据治理岗位的核心技能。
目录
可视化演示
展示策略模式如何将算法族封装为独立类,通过上下文在运行时动态切换策略,实现开闭原则与行为复用。
本节配有交互动效(进入视口后自动加载,约 3KB)。
策略模式结构 Context持有策略引用,委托执行 Strategy接口定义算法契约 具体策略封装不同算法实现 Context → Strategy → ConcreteStrategy 运行时切换策略实现行为动态变化
1. 元数据管理:档案卷宗的“封面卡片”
你刚走进档案馆时,地上堆着十万份卷宗。老员工递给你一沓空白的封面卡片说:“从今天起,每收到一份卷宗,先填一张卡片——编号、标题、来源部门、建档日期、密级,然后贴在卷宗封面上。”有了这些卡片,下次任何人来查档,你都能在一分钟内定位目标。这张卡片,就是数据的元数据。没有元数据的数据资产,就像没有封面的卷宗,存在等于不存在。
在数据世界里,元数据就是“关于数据的数据”。Atlas 的价值在于把这些卡片数字化、集中化、自动化。按内容和用途,元数据可以分三类:技术元数据描述存储与结构(表名、字段名、类型、分区),业务元数据描述业务含义(负责人、指标口径、质量规则),管理元数据描述生命周期(创建时间、更新频率、归档策略)。三者合在一起,才是一张完整的“档案卡片”。
Atlas 用一套统一的模型来承载这些卡片。它把每个数据资产看作一个实体(Entity),实体有类型(Table、Column、Process 等),每个实体挂载若干属性。这个模型可以用一个映射函数来理解:
有了这张“卡片”,数据世界从混沌变得有序。档案馆里每一份卷宗都有自己的身份,不再是地上的一座纸山。而我们要记住:这张卡片不是静态的——随着管道不断运行,卡片上的内容会持续更新,这正是 Atlas 与普通 Excel 台账的本质区别。
- Asset 数据资产集合所有需要管理的对象,比如一张 Hive 表、一个字段、一条数据管道任务。
- MetaSpace 元数据空间存放全部档案卡片的地方,在 Atlas 中就是那个图数据库。
- M(a) 映射生成卡片对每个资产生成一张卡片,卡片上的每一项都是“属性名:属性值”。
2. 核心组件架构:档案馆的“三件套”
真正的档案馆不是一间屋子,而是三样东西一起转:前台接待处负责回答“哪份卷宗在哪个库区”;地下库房负责真的把卷宗码放整齐;内部信件管道负责让各科室之间传话不靠吼。Atlas 的架构也恰好是这三件套,少了任何一件,档案馆都转不起来。
第一件是 Atlas 服务端(Atlas Server)。它是前台接待处,接收所有查询和写入请求。你通过 Web UI 或 API 问“这张表属于谁”,接待处立刻去库里查;你想给某张表加一个分类标签,接待处负责把标签贴上去。第二件是 HBase 库房。Atlas 并不用一堆 Excel 表来存元数据,而是用图结构存:每个数据资产是图里的一个“点”,资产之间的关系(如“这张表由那张表生成”)是图里的“边”。把图存放在 HBase 里,天然适合回答“谁和谁有关系”这类问题。第三件是 Kafka 信件管道。当有新的元数据进来、或已有元数据被修改时,Atlas 会把变更事件广播到 Kafka 主题里,让下游所有关注者收到消息。
这个“图”的架构可以用一个简洁的表达式描述:
这三件套各司其职:前台(Server)保证交互体验,库房(HBase)保证存储可靠,信件系统(Kafka)保证消息实时。理解了它们的分工,你就理解了 Atlas 架构的骨架。后续所有功能——血缘、分类、API——都是在这三件套之上长出来的。
- V 顶点集合每个顶点就是一个数据资产实体,例如
hive_table(表)或hive_column(字段)。 - E 边集合每条边连接两个顶点,代表一种关系,比如“字段属于表”、“表由某条 SQL 生成”。
- 图存储优势查询“这张表关联了哪些字段、哪些上游表”时,沿边遍历比多表 JOIN 快得多。
3. 血缘追踪机制:卷宗的“流转履历”
档案馆里有一类最重要的记录叫“转运单”:一份机密卷宗从税务局转到法院时,档案员会在转运单上登记——来处、去处、时间、经手人。以后卷宗出了问题,沿着一叠转运单往回查,就能知道它在谁手里被改过。这些转运单合在一起,就是数据的血缘(Lineage)。
Atlas 的血缘追踪,就是自动为每一条数据转换记录“转运单”。比如一条 Hive SQL 把 ods_orders 加工成了 dwd_orders_clean,Atlas 会在图里画一条从前者指向后者的有向边。难点在于:数据管道里的转换成千上万,靠人工登记转运单不现实。Atlas 的解法是Hook 自动采集——在 Hive、Spark、Flink 等引擎中埋入钩子,作业执行时 Hook 自动解析执行计划,提取“输入了哪些表、输出了哪些表”,然后把血缘关系写入图数据库。
用数学语言来讲,血缘是一个有向二元关系,而且我们经常需要沿血缘链跨越多级追溯:
有了这份“流转履历”,数据的任一环节出问题,你都不用打开数据本身,只需沿血缘链“按图索骥”。下游报表数字异常?沿着反向血缘一层层点回去,就能找到最早变质的那张源表。这是 Atlas 最有价值的能力,也是它被称为“数据治理核心”的原因。
- 血缘边 $(d_i, d_j)$表示数据 $d_j$ 是由 $d_i$ 加工而来的,方向从上游指向下游。
- $R^k$ 多步血缘$R^2$ 表示“两步以内”的派生关系,例如源表→中间表→报表。
- $R^{+}$ 传递闭包把所有步数的关系合并,得到“从哪来、到哪去”的完整网络。
4. 数据分类体系:档案的“密级标签”
档案馆有个不成文的规矩:机密卷宗封面要贴红色标签,内部资料贴黄色,公开文件贴绿色。管理员不必打开卷宗,只看标签就知道该不该借给来访者。Atlas 的分类(Classification)体系就是给数据资产贴这种“密级标签”。
在 Atlas 中,分类标签本身是一类特殊的实体,叫作 Classification。你可以定义"PII““机密”“财务数据”等标签,然后把它们贴到任何表、字段或列上。一个资产可以同时贴多个标签——比如一张用户表既贴”PII“又贴”机密“。更关键的是,标签可以被权限系统消费:Apache Ranger 与 Atlas 联动后,凡是贴了”PII“标签的字段,非授权用户一律不可见。这就是”看标签决定放不放行"的自动化版本。
标签系统的形式化描述很直观——资产到标签集合的映射:
标签还有一条重要特性:自动分类。Atlas 可以配置规则,根据字段名或表名特征自动打标。例如字段名包含 id_card 或 phone 就自动贴"PII"标签。这避免了纯手工打标在规模扩大后的漏标与错标。密级标签贴好了,权限管控才有的放矢——下一节要讲的治理策略,很多都建立在这层标签之上。
- Tag 标签全集所有预定义的分类,如 PII、机密、公开、财务敏感。
- $2^{\text{Tag}}$ 标签的幂集一个资产可以拥有的标签的任意组合,从空集到全集。
- $C(a)$ 打标结果例如一张用户表被标记为同时含 PII 和机密标签。
5. API集成对接:档案馆的“对外窗口”
档案馆不能只接待上门的人。法院要批量调阅卷宗,医院要定期归档病例,于是档案馆开设了“服务窗口”:填写申请单(请求),窗口递出结果(响应)。同时,档案馆还装了广播系统——每当新卷宗上架,就广播一次,让所有部门及时知道。Atlas 的对外集成能力,正是这两个窗口:REST API 和 Kafka 事件通知。
REST API 是 Atlas 最常用的交互方式。数据工程师可以通过 HTTP 请求完成几乎全部元数据操作:创建实体、查询实体、添加分类、获取血缘图。比如用 GET /api/atlas/v2/lineage/{guid} 就能拿到一张表的完整血缘图。这些 API 是标准的 JSON 交换格式,任何语言都能调用,相当于档案馆的对公窗口——不限身份,按规矩办事。
另一扇窗口是 Kafka 事件通知。Atlas 内部任何元数据变化(新增表、修改字段、打标签)都会被打包成事件发送到 Kafka 的 ATLAS_ENTITIES 主题。下游系统订阅这个主题,就能实时感知元数据变化,而不必反复轮询 API。这个“广播”机制可以形式化为事件模型:
这两个窗口合起来,让 Atlas 不再是一个孤立的档案馆,而是嵌进整个数据生态的“中间枢纽”。数据管道在建表时报到一声(API),元数据变更时广播一声(Kafka),所有系统都能感知数据世界正在发生什么。有了这两个窗口,Atlas 与 Hive、Spark、Ranger、数据质量平台等系统的对接就水到渠成了。
- op 操作类型对元数据执行的动作,只有三种——新建、修改、删除。
- entity 实体被操作的数据资产,包含类型的 GUID 及全部属性。
- t 时间戳事件发生的精确时间,用于审计与回溯排序。
- 投递到 Kafka事件被写入主题
ATLAS_ENTITIES,下游按需消费。
6. 数据治理策略:档案馆的“馆规”
每个档案馆都有自己的“馆规”:什么级别的证件能借什么密级的卷宗;所有借阅都要登记在册;涉密卷宗调阅需要双人复核。馆规不能只写在墙上的横幅里,必须落进系统的每一条判断分支里。Atlas 的数据治理策略,正是这样一套“写在代码里的馆规”。
Atlas 治理策略的核心是权限管控。它与 Apache Ranger 深度集成:Atlas 负责给数据贴标签(如 PII、机密),Ranger 负责在访问时检查“来访者的角色是否在允许名单里”。比如一张贴了“PII“标签的表,Ranger 配置”仅数据治理团队可读“,那么其他人即使知道表名,查询也会被拒绝。第二个支柱是审计追踪:Atlas 记录每一次元数据操作——谁、在什么时间、对哪个实体、做了什么。当合规部门要求”证明你们删除了该用户的数据”时,这些审计记录就是最有力的证据。第三个支柱是合规管理:GDPR、等保等法规要求企业能说明个人数据流向何处,血缘 + 分类 + 审计三者叠加,就能一键生成数据流向报告。
访问控制策略可以抽象为一个简单的判定函数:
馆规的价值不在于“写出来”,而在于“被执行”。Atlas 把密级标签(分类)、角色名单(Ranger 策略)和操作留痕(审计日志)串成一条完整的治理链条——标签是规则依据,权限是执行手段,审计是事后追责。三者齐备,档案馆的规矩才真正立得住。
- u 用户发起访问请求的人,比如一名 BI 分析师或者一个数据管道任务。
- a 数据资产被请求访问的目标,例如带 PII 标签的用户表。
- Role(u) 用户角色系统分配给用户的身份标签,如
analyst、admin。 - Perm(a) 资产允许的角色集合在 Ranger 策略中该资产放行的角色名单。
- 判定结果用户的角色如果命中放行名单,返回 True;否则返回 False,请求被拒绝。
7. 项目实践落地:把档案馆从图纸变成现实
图纸画得再漂亮,不开张也是零。真实世界中把 Atlas 这个档案馆建起来,大致分三步:砌库房、装前台、接信件管道。每一步都有对应的技术动作,做完之后,还要和“税务局”签一份自动归档协议,让新卷宗每天自己走进来。
第一步,准备依赖组件。Atlas 需要 HBase 做存储、Kafka 做消息通道,此外还用 Solr 做全文索引加速检索。第二步,启动 Atlas 服务端。解压安装包,配置 atlas-application.properties,指定 HBase 和 Kafka 的连接地址,然后启动 Atlas Server。启动后,你能在 http://localhost:21000 打开 Web UI,看到一座“空荡荡的档案馆”。第三步,接入数据源——最常见的做法是给 Hive 配置 Atlas Hook:在 hive-site.xml 中加入 Hook 配置并重启 Hive。从此,每一条 Hive SQL 执行时,Hook 都会自动解析执行计划,把输入表、输出表的血缘关系写入 Atlas,相当于和税务局签了“自动归档协议”。
整套链路跑通后,评估数据血缘链路的复杂度也需要一个量化指标。血缘深度就是一个实用度量:
开张只是开始。之后每天都要维护库房(监控 HBase 健康)、接收新档案(检查 Hook 是否在采集)、巡检索引(确保 Solr 检索及时更新)。Atlas 的落地不是“搭完架子就结束”,而是“今天开张,往后天天维护”的长期工程。但正是这份工程化的持续投入,才让数据治理从一个漂亮的口号,变成每一张表、每一条血缘都清晰可查的现实。
- Paths(a, b)从 $a$ 到 $b$ 的所有血缘路径的集合,每条路径是一串连续的流转关系。
- $|p|$ 路径长度一条路径中包含的血缘边数量,即转换跳数。
- min 取最小值多条路径存在时,取最短的一条作为深度指标。
- 无路径可达深度为无穷大,表示两个资产之间没有血缘关系。
AI 应用场景
场景一:端到端数据血缘追踪定位数据质量问题
阶段:数据接入与准备
解决的问题:数据团队常被“数据从哪来、在哪一步坏的”折磨。传统做法是靠老员工记忆和手画流程图定位,动辄一两天。Atlas 血缘 API 把“追查”变成一次图查询——从结果报表反向沿着血缘逐级下钻,几分钟就能锁定脏数据源头。
具体案例:某电商平台发现“次日留存率”指标骤降。数据工程师打开 Atlas Web UI,从 retention_report 逐级向上游点击:agg_user_daily → dwd_user_event → ods_user_login,最终发现埋点日志表新增了一个字段导致旧解析脚本类型不匹配。修复后指标恢复。
场景二:个人数据合规审计与删除
阶段:数据治理与合规
解决的问题:GDPR 要求企业能证明“哪些个人数据流向何处”,并支持用户“被遗忘权”。没有血缘图谱时,合规团队只能靠人肉遍历数据库,几乎不可能按期完成。Atlas 的 PII 标签 + 血缘闭包查询,让“找到所有包含该用户数据的表”变成一条 API 调用。
具体案例:一位欧盟用户要求删除其个人数据。合规工程师在 Atlas 中选中贴有 PII 标签的用户实体,通过血缘反向查询找到全部 47 张消费了下游数据的表,在 48 小时内完成了删除与出具证明报告。
场景三:AI 特征管道血缘审计
阶段:MLOps 特征工程
解决的问题:机器学习模型上线后出现效果突变,MLOps 工程师需要判断“训练数据是否被动过”。Atlas 为特征存储表建立血缘,让特征与原始日志表、清洗任务的关系一目了然,特征漂移归因从“猜”变成“查”。
具体案例:推荐系统点击率异常下跌,MLOps 工程师通过 Atlas 血缘发现用户画像特征表的上游——埋点日志表——发生过 schema 变更(gender 字段枚举值改变),导致特征分布漂移。回滚变更后指标恢复。
Python 演示
import requestsfrom requests.auth import HTTPBasicAuth ATLAS_URL = "http://localhost:21000/api/atlas/v2"AUTH = HTTPBasicAuth("admin", "admin")HEADERS = {"Content-Type": "application/json"} def search_entities(type_name="hive_table", limit=20): url = ATLAS_URL + "/search/basic" params = {"typeName": type_name, "limit": limit} resp = requests.get(url, params=params, auth=AUTH, headers=HEADERS) resp.raise_for_status() return resp.json().get("entities", []) def get_lineage(guid): url = ATLAS_URL + "/lineage/" + guid params = {"direction": "BOTH"} resp = requests.get(url, params=params, auth=AUTH, headers=HEADERS) resp.raise_for_status() return resp.json() def find_entity_by_name(name): entities = search_entities("hive_table", 100) for entity in entities: attrs = entity.get("attributes", {}) if name in attrs.get("qualifiedName", ""): return entity return None def show_related_nodes(lineage): node_map = lineage.get("guidEntityMap", {}) print("血缘图节点数:", len(node_map)) for _, node in node_map.items(): attrs = node.get("attributes", {}) qname = attrs.get("qualifiedName", "") print(" -", qname or node.get("typeName", "")) def main(): entity = find_entity_by_name("sales_order") if entity is None: print("未找到目标表,请检查名称") return print("命中实体:", entity["attributes"].get("qualifiedName")) print("GUID:", entity["guid"]) lineage = get_lineage(entity["guid"]) show_related_nodes(lineage) if __name__ == "__main__": main()
url = ATLAS_URL + "/search/basic"拼接 REST 搜索接口地址,Atlas 所有 API 都挂在/api/atlas/v2之下resp = requests.get(url, params=params, auth=AUTH, headers=HEADERS)携带用户名密码和 JSON 头发起 GET 请求resp.raise_for_status()状态码不是 200 时立即抛出异常,避免拿到半截数据继续跑params = {"direction": "BOTH"}同时查询上游(数据来源)和下游(数据去向),拿到完整血缘网attrs.get("qualifiedName", "")从实体的属性字典里安全取出全限定名,取不到就返回空串if name in attrs.get("qualifiedName", "")用子串匹配方式实现“按名称找表”if __name__ == "__main__": main()让脚本既能被 import 复用,也能直接命令行执行
常见误区
误区我以为把表名、字段名、负责人记到 Excel 里,定期手动更新,就算做了元数据管理。Excel 丢了,数据治理就没了。
正解元数据管理的核心不是“记录”,而是“让元数据活起来”。Atlas 把元数据存成图结构,随着管道运行自动采集更新,并通过 API 被下游系统实时消费。Excel 台账是静态快照,Atlas 是活的档案馆——卷宗入库时卡片自动生成,借阅记录自动留痕。
为何常见:初学者接触元数据通常从手工登记开始,只看到“目录”这层皮,没看到“自动采集 + 服务化”才是元数据管理的骨架。
误区我手动画出 ETL 流程图,标清楚每张表的上下游,这不就是血缘追踪吗?我觉得比 Atlas 还直观。
正解血缘追踪的本质是“从执行计划中自动提取真实流转关系”,而不是人工画图。Atlas 靠 Hive Hook 解析每条 SQL 的执行计划,自动向图数据库写入 input→output 边。人工图有几个致命问题:更新不及时、无法回答“哪张表受这次变更影响”这种动态查询、无法支撑影响分析和回溯审计。
为何常见:人工画图立竿见影,让人误以为结果等价;实际上血缘的价值在于“可查询、可穿透、可分析”,这些只有自动采集才能做到。
误区我把 Atlas 装起来了,Hive Hook 也配好了,元数据开始自动采集了,数据治理项目可以宣告胜利了。
正解Atlas 只是“档案馆的硬件”。真正的治理是持续动作:定义分类标签体系、配置 Ranger 权限策略、把血缘检查纳入发布流程、周期性复核元数据质量。工具提供能力,治理是组织流程和制度规范,两者缺一不可。
为何常见:很多团队把“上线工具”误认为“达成目标”,忽略了治理本质上是人与流程的持续改进,工具只是抓手。
误区我让业务部门每次建表时手动勾选一下“是否是 PII”“是否机密”,不就行了?他们最懂自己的数据。
正解手动打标延迟高、遗漏多且标准不统一。生产环境应该基于命名规范和元数据特征做自动打标:比如字段名含 id_card 自动标 PII、表名含 internal 自动标内部。业务人员只做例外情况的复核与修正。规模几十张表时手动可行,几百上千张后必然崩溃。
为何常见:手动方式在小规模下看起来“灵活可控”,规模上来后问题才暴露——表现为标签漏标、错标半年没人发现,权限策略因此形同虚设。
面试题
Q1. 元数据最准确的定义是什么?
- A.描述数据自身的数据信息← 正确答案
- B.存储在数据库中的业务数据
- C.用户行为产生的日志数据
- D.训练算法模型所需特征数据
答案:A。元数据是“关于数据的数据”,描述数据资产本身的属性,如字段名、类型、责任人。B 是数据库中的业务数据,C 是平台产生的日志,D 是特征数据——它们都是“被描述的对象”,而不是描述信息本身。
Q2. 下列哪一项属于技术元数据?
- A.表的字段名与数据类型← 正确答案
- B.数据所有者的联系电话
- C.业务指标口径的说明文档
- D.数据质量责任人的邮箱
答案:A。技术元数据描述存储与结构信息,字段名和数据类型是典型代表。B/D 描述责任人与联系方式,属于管理元数据;C 描述业务口径,属于业务元数据。回到档案馆的比喻:字段名是封面上的编号,业务口径是卷宗的内容摘要。
Q3. Atlas 将元数据以什么结构持久化?
- A.二维关系表结构存储
- B.图结构顶点加边存储← 正确答案
- C.键值对方式的结构存储
- D.XML文档格式的结构存储
答案:B。Atlas 使用图模型存储元数据:顶点代表实体(表、字段),边代表关系(字段属于表、表由 SQL 生成)。图结构天然适合“谁和谁有关系”这种查询,这正是血缘追踪和影响分析的基础。关系表无法高效表达多跳关系,键值对和 XML 也不适合关系密集型遍历。
Q4. 在 Atlas 中,血缘关系指的是什么?
- A.数据库表之间的外键约束
- B.数据从源到目标的派生流转← 正确答案
- C.数据库备份的先后时间顺序
- D.用户访问数据的权限控制链
答案:B。血缘描述的是数据“从哪来、到哪去”的派生流转关系,例如一条 SQL 把 ods_orders 加工成 dwd_orders_clean。外键约束是数据库物理设计层面的关联,备份顺序是运维信息,权限链是访问控制——它们都不描述数据的加工流转过程。
Q5. Atlas 通过什么机制自动从 Hive 采集血缘?
- A.定时扫描HDFS的全部文件
- B.配置Hook解析执行计划← 正确答案
- C.定时读取SQL执行日志文件
- D.分析Hive前端页面的内容
答案:B。Atlas 为 Hive 提供 Hook,作业执行时 Hook 自动解析执行计划(Query Plan),提取输入表和输出表,把血缘关系写入 Atlas。扫描 HDFS 只能看到文件看不到转换逻辑,读日志是被动且不完整的,前端页面分析则完全不相关。
Q6. 要查找从表 A 到表 B 的全部派生路径,需要计算什么?
- A.对血缘图求最小生成树
- B.计算血缘关系的传递闭包← 正确答案
- C.对血缘图执行拓扑排序
- D.求血缘网络中的最大流
答案:B。传递闭包 R+ 沿血缘边追溯所有多级派生关系,能回答“从 A 出发能到达哪些表、哪些表能到达 B”。最小生成树只求连通子图,拓扑排序用于任务调度顺序,最大流解决容量问题——都与“多级可达”无关。这正是血缘影响分析背后的数学基础。
Q7. Atlas 中分类(Classification)的主要作用是什么?
- A.给数据资产贴标签驱动治理← 正确答案
- B.压缩元数据的存储空间
- C.加速下游 SQL 的查询速度
- D.替换 HBase 的底层存储引擎
答案:A。分类标签(如 PII、机密)贴到数据资产上,是权限策略、审计追踪和合规报告的依据。Ranger 可以基于标签做行级或列级过滤,合规团队可以按标签批量查询数据流向。分类不负责存储优化,也不参与 SQL 执行的加速。
Q8. 关于 Atlas 存储架构,下列说法正确的有?
- A.HBase存储元数据实体与关系← 正确答案
- B.Solr为元数据提供全文检索← 正确答案
- C.Kafka广播实体变更事件通知← 正确答案
- D.JIRA负责存储数据血缘关系
答案:ABC。Atlas 用 JanusGraph 作为图引擎,底层把图数据持久化到 HBase;Solr 提供全文检索加速搜索;Kafka 负责实体变更事件广播。JIRA 是项目管理工具,与 Atlas 存储无关。“库房、索引卡、广播系统”三件套缺一不可。
Q9. 通过 Atlas REST API 可以完成哪些操作?
- A.创建新的数据实体资产← 正确答案
- B.查询实体的血缘关系图← 正确答案
- C.为实体添加分类标签← 正确答案
- D.直接提交并执行HiveSQL
答案:ABC。Atlas 的 REST API 覆盖元数据管理:实体增删改查(A)、血缘查询(B)、分类标签管理(C)。但 Atlas 不执行 SQL——SQL 由计算引擎(Hive/Spark)执行,Atlas 只负责记录这些引擎跑出来的血缘关系。它是一本“账”,不是“加工车间”。
Q10. 下列哪些场景属于 Atlas 的数据治理能力?
- A.依据血缘审计用户数据删除← 正确答案
- B.根据PII标签限制下游访问← 正确答案
- C.记录元数据历史变更信息← 正确答案
- D.实时计算并产出报表数据
答案:ABC。治理能力是“发现、分类、追踪、审计”:血缘审计(A)、标签权限(B)、变更记录(C)都符合。D 是数据计算的职责,属于 Hive/Spark 等计算引擎的能力范围。Atlas 是档案馆,不是加工车间——它记录“卷宗被谁借过”,但不管“卷宗内容怎么算出来”。