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存储处理器。