欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

hiveLineageState分析

时间:2023-07-15

Task 类有变量 queryState。queryState 包含变量 lineageState。LineageState 用于为任务执行回调中用到的血缘信息。
为了掌握 LineageState,需要先掌握以下的几个类。

TableAliasInfo

TableAliasInfo 是 LineageInfo 的静态内部类。有两个变量,alias 是表的别名,table 是表对象。

public static class TableAliasInfo implements Serializable { String alias; private Table table; }

baseColumnInfo

baseColumnInfo 是 LineageInfo 的静态内部类。有两个变量,tabAlias 是表的别名对象,column 是列对象。

public static class baseColumnInfo implements Serializable { private TableAliasInfo tabAlias; private FieldSchema column; }

DataContainer 数据容器

表或者分区数据容器。因为查询的结果输出可能到一个表中,也有可能是表的一个分区。DataContainer 类可以包括这两种类型。

public static class DataContainer implements Serializable { // 表的信息,如果数据容器是表 private final Table tab; // 分区信息,如果数据容器是分区 private final Partition part; }

DependencyType

DependencyType 是 LineageInfo 的静态内部枚举类。
有 3 个成员:

SIMPLE - 简单依赖:代表此列是其他表的列字段,没有经过任何转换。如 T2.c1 = T1.c1.expression - 表达式依赖:代表此列是从 UDF, UDAF, UDTF 或者集合操作(如 union 两个集合列)的结果。如 T2.c1 = T1.c1 + T3.c1.script - 脚本依赖:代表此列是用户脚本的输出结果。用户的脚本通过 TRANSFORM, MAP 或 REDUCE 语法或者从 PTF 执行链的结果。(PTF – PartitionedTableFunction:表分区函数)

public static enum DependencyType { SIMPLE, expression, script }

DependencyKey

DependencyKey 表示一个字段。DependencyKey 用于索引映射 protected Map index;

public static class DependencyKey implements Serializable { // key 的数据容器 private final DataContainer dc; // key 的字段信息。 private final FieldSchema fld;}

Dependency

// 用于跟踪 base column 的依赖信息 public static class Dependency implements Serializable { private DependencyType type; private String expr; private Set baseCols;}

Predicate

Predicate 是 LineageInfo 的静态内部类。

public static class Predicate implements Serializable { private String expr; private Set baseCols = new linkedHashSet();}

LineageInfo

public class LineageInfo implements Serializable { protected Map index;}

LineageState

public class LineageState implements Serializable { private final Map dirToFop; private Index index; private final LineageInfo linfo; public LineageState() { dirToFop = new HashMap<>(); linfo = new LineageInfo(); index = new Index(); }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。