Hcatalog简介
HCatalog是Hadoop生态链中的一个有趣的组件。HCatalog构建于Hive的metastore之上并结合了Hive的DDL,通过服务的形式开放给Hadoop生态链中的其他组件,这样即可用一种统一的形式将Hive数据仓库中的数据的metadata开放给需要的服务,这样的话需要的服务就可以通过HCatalog来了解到所使用的数据的内容以及格式等等元信息。
下图展示了HCatalog在Hadoop生态系统中的定位:

可以看出HCatalog内置可以支持多种数据格式:
- ORC
- RC
- Text
- SequenceFile
另外用户还可以自定义格式,不过需要编写InputFormat, OutputFormat, SerDe(Serializer/Deserializer):

HCatalog提供了’hcat’
$ hcat
usage: hcat { -e "" | -f "" } [ -g "" ] [ -p "" ] [ -D"=" ]
-D use hadoop value for given property
-e hcat command given from command line
-f hcat commands in file
-g group for the db/table specified in CREATE statement
-h,--help Print help information
-p permissions for the db/table specified in CREATE statement
参数-e提供了使用Hive ‘DDL’命令的接口
| DDL命令 | 解释 |
|---|---|
| CREATE TABLE | 建表操作,注意如果建表时使用了“CLUSTERED BY”那么这个表不能被Pig和MapReduce使用 |
| ALTER TABLE | 修改表 |
| SHOW TABLES | 查询表 |
| DROP TABLE | 删除表 |
| CREATE/ALTER/DROP VIEW | 管理view |
| SHOW PARTITIONS | 查询分区表的分区信息 |
| Create/Drop Index | 管理index |
| DESCRIBE | 查询表结构 |
例子:
$ hcat -e "show tables;"
OK
activity
device
...
Time taken: 3.255 seconds
# hcat -e "describe device;"
OK
id bigint
uuid string
time string
type int
address string
Time taken: 3.824 seconds
APIs
| API | 解释 |
|---|---|
| HCatReader | 从hdfs中读取数据 |
| HCatWriter | 向hdfs中写入数据 |
| DataTransferFactory | 创建HCatReader/HCatWriter实例 |
| HCatInputFormat | 利用MapReduce job从表结构由HCatalog管理的表中读取并处理数据 |
| HCatOutputFormat | 利用MapReduce job处理数据并向表结构由HCatalog管理的表中写入数据 |
| HCatLoader | Pig script用来读取表结构由HCatalog管理的数据 |
| HCatStorer | Pig script用来写入表结构由HCatalog管理的数据 |