重要 | mr使用hcatalog读写hive表

640?wx_fmt=png

企业中,由于领导们的要求,hive中有数据存储格式很多时候是会变的,比如为了优化将tsv,csv格式改为了parquet或者orcfile。那么这个时候假如是mr作业读取hive的表数据的话,我们又要重新去写mr并且重新部署。这个时候就很蛋疼。hcatalog帮我们解决了这个问题,有了它我们不用关心hive中数据的存储格式。详细信息请仔细阅读本文。

640?wx_fmt=png

 

本文主要是讲mapreduce使用HCatalog读写hive表。

hcatalog使得hive的元数据可以很好的被其它hadoop工具使用,比如pig,mr和hive。

HCatalog的表为用户提供了(HDFS)中数据的关系视图,并确保用户不必担心他们的数据存储在何处或采用何种格式,因此用户无需知道数据是否以RCFile格式存储, 文本文件或sequence?文件。

它还提供通知服务,以便在仓库中有新数据可用时通知工作流工具(如Oozie)。

HCatalog提供HCatInputFormat / HCatOutputFormat,使MapReduce用户能够在Hive的数据仓库中读/写数据。 它允许用户只读取他们需要的表和列的分区。 托福备考返回的记录格式是方便的列表格式,用户无需解析它们。

下面我们举个简单的例子。

在mapper类中,我们获取表schema并使用此schema信息来获取所需的列及其值。

下面是map类。


 

在reduce类中,会为将要写入hive表中的数据创建一个schema。


 

最后,创建driver类,并且表明输入输出schema和表信息。


 

当然,在跑上面写的代码之前,应该先在hive中创建输出表。


可能会引起错误的地方是没有设置$HIVE_HOME.

[完]

欢迎点击阅读原文扫二维码加入浪尖知识星球,获取更多优质的大数据学习资源和指导。

推荐阅读:

Hive性能优化(全面)

Hive高级优化

640?wx_fmt=jpeg


文章来源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/81713969

posted @ 2018-09-12 11:26  马竹君  阅读(1879)  评论(0编辑  收藏  举报
友情链接:回力 | 中老年高档女装 | 武汉雅思培训 | 武汉托福 | 武汉sat培训