重要 | mr使用hcatalog读写hive表
企业中,由于领导们的要求,hive中有数据存储格式很多时候是会变的,比如为了优化将tsv,csv格式改为了parquet或者orcfile。那么这个时候假如是mr作业读取hive的表数据的话,我们又要重新去写mr并且重新部署。这个时候就很蛋疼。hcatalog帮我们解决了这个问题,有了它我们不用关心hive中数据的存储格式。详细信息请仔细阅读本文。
本文主要是讲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高级优化
文章来源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/81713969