HCatalog

概观

HCatalog是Hadoop的表和存储管理层,它使使用不同数据处理工具(Pig,MapReduce)的用户能够更轻松地在网格上读取和写入数据。HCatalog的表抽象为用户提供了Hadoop分布式文件系统(HDFS)中数据的关系视图,并确保用户不必担心其数据的存储位置或格式(RCFile格式,文本文件,SequenceFiles或ORC文件)。

HCatalog支持以可以写入SerDe(serializer-deserializer)的任何格式读取和写入文件。默认情况下,HCatalog支持RCFile,CSV,JSON,SequenceFile和ORC文件格式。要使用自定义格式,必须提供InputFormat,OutputFormat和SerDe。

 

HCatalog体系结构

HCatalog建立在Hive Metastore之上,并结合了Hive的DDL。HCatalog为Pig和MapReduce提供读写接口,并使用Hive的命令行界面发布数据定义和元数据探索命令。

接口

Pig的HCatalog接口由HCatLoader和HCatStorer组成,它们分别实现了Pig的加载和存储接口。HCatLoader接受一个表来读取数据;您可以通过紧跟在load语句之后并使用分区过滤器语句来指示要扫描的分区。HCatStorer接受要写入的表,还可以选择指定分区键来创建新分区。您可以通过在STORE子句中指定分区键和值来写入单个分区。如果分区键是要存储的数据中的列,则可以写入多个分区。HCatLoader在HCatInputFormat之上实现,HCatStorer在HCatOutputFormat之上实现。(请参阅加载和存储接口。)

MapReduce的HCatalog接口HCatInputFormat和HCatOutputFormat是Hadoop InputFormat和OutputFormat的实现。HCatInputFormat接受一个表以从中读取数据,还可以选择一个选择谓词来指示要扫描的分区。HCatOutputFormat接受要写入的表,还可以选择指定分区键来创建新分区。您可以通过在setOutput方法中指定分区键和值来写入单个分区。如果分区键是要存储的数据中的列,则可以写入多个分区。(请参阅输入和输出接口。)

注意:没有特定于Hive的界面。由于HCatalog使用Hive的metastore,因此Hive可以直接在HCatalog中读取数据。

数据是使用HCatalog的命令行界面(CLI)定义的。HCatalog CLI支持所有不需要MapReduce执行的Hive DDL,从而允许用户创建,更改,删除表等。CLI还支持Hive命令行的数据浏览部分,例如SHOW TABLES,DESCRIBE TABLE和以此类推。不支持的Hive DDL包括导入/导出,ALTER TABLE的REBUILD和CONCATENATE选项,CREATE TABLE AS SELECT以及ANALYZE TABLE ... COMPUTE STATISTICS。(请参阅命令行界面。)

资料模型

HCatalog提供了数据的关系视图。数据存储在表中,这些表可以放置在数据库中。还可以将表散列在一个或多个键上。也就是说,对于一个键(或一组键)的给定值,将存在一个分区,其中包含具有该值(或一组值)的所有行。例如,如果一个表按日期分区,并且该表中有三天的数据,则该表中将有三个分区。可以将新分区添加到表中,也可以从表中删除分区。分区表在创建时没有分区。未分区表实际上具有一个默认分区,该默认分区必须在表创建时创建。删除分区时,无法保证读取的一致性。

分区包含记录。创建分区后,无法将记录添加到分区,从分区中删除或更新。分区是多维的,不是分层的。记录分为几列。列具有名称和数据类型。HCatalog支持与Hive相同的数据类型。有关数据类型的更多信息,请参见加载和存储接口

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值