mr如何使用hcatalog读写hive表
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇文章给大家分享的是有关mr如何使用hcatalog读写hive表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。企业中,由于领导们的要
千家信息网最后更新 2025年12月01日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.
本篇文章给大家分享的是有关mr如何使用hcatalog读写hive表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
public class onTimeMapper extends Mapper {@Overrideprotected void map(WritableComparable key, HCatRecord value,org.apache.hadoop.mapreduce.Mapper.Context context)throws IOException, InterruptedException {// Get table schemaHCatSchema schema = HCatBaseInputFormat.getTableSchema(context);Integer year = new Integer(value.getString("year", schema));Integer month = new Integer(value.getString("month", schema));Integer DayofMonth = value.getInteger("dayofmonth", schema);context.write(new IntPair(year, month), new IntWritable(DayofMonth));}}
public class onTimeReducer extends Reducer {public void reduce (IntPair key, Iterable value, Context context) throws IOException, InterruptedException{ int count = 0; // records counter for particular year-month for (IntWritable s:value) { count++; } // define output record schema List columns = new ArrayList(3); columns.add(new HCatFieldSchema("year", HCatFieldSchema.Type.INT, "")); columns.add(new HCatFieldSchema("month", HCatFieldSchema.Type.INT, "")); columns.add(new HCatFieldSchema("flightCount", HCatFieldSchema.Type.INT,"")); HCatSchema schema = new HCatSchema(columns); HCatRecord record = new DefaultHCatRecord(3); record.setInteger("year", schema, key.getFirstInt()); record.set("month", schema, key.getSecondInt()); record.set("flightCount", schema, count); context.write(null, record);}}public class onTimeDriver extends Configured implements Tool{private static final Log log = LogFactory.getLog( onTimeDriver.class );public int run( String[] args ) throws Exception{Configuration conf = new Configuration();Job job = new Job(conf, "OnTimeCount");job.setJarByClass(onTimeDriver.class);job.setMapperClass(onTimeMapper.class);job.setReducerClass(onTimeReducer.class);HCatInputFormat.setInput(job, "airline", "ontimeperf");job.setInputFormatClass(HCatInputFormat.class);job.setMapOutputKeyClass(IntPair.class);job.setMapOutputValueClass(IntWritable.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(DefaultHCatRecord.class);job.setOutputFormatClass(HCatOutputFormat.class);HCatOutputFormat.setOutput(job, OutputJobInfo.create("airline", "flight_count", null));HCatSchema s = HCatOutputFormat.getTableSchema(job);HCatOutputFormat.setSchema(job, s);return (job.waitForCompletion(true)? 0:1);}public static void main(String[] args) throws Exception{int exitCode = ToolRunner.run(new onTimeDriver(), args);System.exit(exitCode);}}
create table airline.flight_count(Year INT ,Month INT ,flightCount INT)ROW FORMAT DELIMITED FIELDS TERMINATED BY ','STORED AS TEXTFILE;
以上就是mr如何使用hcatalog读写hive表,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
数据
格式
用户
存储
信息
时候
仓库
工具
文件
更多
知识
篇文章
工作
输出
实用
不用
代码
企业
例子
地方
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖南哪个区有服务器云主机
互联网新零售交泰科技
服务器管理员工工作
科技互联网大叔
郑州游爱网络技术有限公司
天一晟汇北京网络技术
网络安全atp设备
服务器脱机103
文件服务器的搭建
广州廷宝互联网科技有限公司
网络安全宣传片第五空间
2网络安全黑板报幼儿园
软件开发测试与验收
linux 开发软件开发
互联网科技公司的国家政策
服务器系统win7
广州网络技术最好的公司
达蒙数据库表中默认值
数据库系统的组成简述
广州大学;网络安全
衡阳软件开发价格
京东2005年用的服务器
河南熠鸿网络技术
计算机无线网络安全 论文
学了网络技术专业可以干嘛
迁安网络技术公司电话
数据库中where语句
网络安全项目实施流程
上海常用软件开发定制价格
通化市软件开发公司