目录

Apache-Atlas系列-Hive-Hook实现分析

概述

本文主要介绍一下 Hive 的 Hook 是怎么实现的。

项目结构

仅仅是关注 hive-bridge 这个包。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
src
│   ├── bin
│   │   └── import-hive.sh
│   ├── main
│   │   ├── java
│   │   │   └── org
│   │   │       └── apache
│   │   │           └── atlas
│   │   │               └── hive
│   │   │                   ├── bridge
│   │   │                   │   └── HiveMetaStoreBridge.java
│   │   │                   ├── hook
│   │   │                   │   ├── AtlasHiveHookContext.java
│   │   │                   │   ├── HiveHook.java
│   │   │                   │   └── events
│   │   │                   │       ├── AlterDatabase.java
│   │   │                   │       ├── AlterTable.java
│   │   │                   │       ├── AlterTableRename.java
│   │   │                   │       ├── AlterTableRenameCol.java
│   │   │                   │       ├── BaseHiveEvent.java
│   │   │                   │       ├── CreateDatabase.java
│   │   │                   │       ├── CreateHiveProcess.java
│   │   │                   │       ├── CreateTable.java
│   │   │                   │       ├── DropDatabase.java
│   │   │                   │       └── DropTable.java
│   │   │                   └── model
│   │   │                       └── HiveDataTypes.java
│   │   └── resources
│   │       └── atlas-hive-import-log4j.xml

从上面看到,其实实现这样一个 Hive Hook 并不复杂。首先分析一下 import-hive.sh 脚本,因为这个是导入 Hive 元数据的一个工具脚本,从里面,我们可以分析出入口类和其他细节。

核心的地方在:

1
"${JAVA_BIN}" ${JAVA_PROPERTIES} -cp "${CP}" org.apache.atlas.hive.bridge.HiveMetaStoreBridge $IMPORT_ARGS

入口类是 org.apache.atlas.hive.bridge.HiveMetaStoreBridge

警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。