Hive源码——HiveStorageHandler


发布于 2024-04-23 / 26 阅读 / 0 评论 /
Hive存储处理器的实现,本文基于Hive-4.0.0

HiveStorageHandler全路径为org.apache.hadoop.hive.ql.metadata.HiveStorageHandler。

HiveStorageHandler定义了一个插件接口,用于为Hive添加新的存储处理器。一个存储处理器需包含以下内容:

(1)input format:需继承org.apache.hadoop.mapred.InputFormat类。用于对输入数据进行处理,比如文件的切分和数据的读取。

(2)output format:需继承org.apache.hadoop.mapred.OutputFormat类。用于对输出数据的处理。比如数据写入文件。

(3)serde:用于对数据进行序列化器和反序列化。

(4)metadata hooks:保持外部的catalog元数据与Hive Metastore同步。

(5)rules:在map/reduce任务中设置的参数,这些配置参数可通过这个处理器来获取。

在“CREATE TABLE”时,通过“STORED BY classname”的形式来指定表对应的存储处理器类。

Hive中提供的storage handler的类结构如下图所示:

在hive中有一些handler模块,就是为了提供对应的storage handler。

hive中提供的以下6中原生storage handler(存储处理器)类。

(1)hive-accumulo-handler

主要是定义和实现org.apache.hadoop.hive.accumulo.AccumuloStorageHandler存储处理器。

(2)hive-druid-handler

主要是定义和实现org.apache.hadoop.hive.druid.DruidStorageHandler存储处理器。

(3)hive-hbase-handler

主要是定义和实现org.apache.hadoop.hive.hbase.HBaseStorageHandler存储处理器。

(4)hive-jdbc-handler

主要是定义和实现org.apache.hive.storage.jdbc.JdbcStorageHandler存储处理器。

(5)hive-kudu-handler

主要是定义和实现org.apache.hadoop.hive.kudu.KuduStorageHandler存储处理器。

(6)kafka-handler

主要是定义和实现org.apache.hadoop.hive.kafka.KafkaStorageHandler存储处理器。