概述
本文主要介绍一下 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日,文中内容可能已过时,请谨慎参考。