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管理的数据 |