mr如何使用hcatalog读写hive表
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇文章给大家分享的是有关mr如何使用hcatalog读写hive表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。企业中,由于领导们的要
千家信息网最后更新 2025年01月23日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 {
@Override
protected void map(WritableComparable key, HCatRecord value,
org.apache.hadoop.mapreduce.Mapper.Context context)
throws IOException, InterruptedException {
// Get table schema
HCatSchema 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安全错误
数据库的锁怎样保障安全
网络安全工作思考和建议
消防系统数据库文件在哪个目录
软件开发高级工程师证
网络安全基本因素包括以下
轻量应用服务器怎么关联实例
护苗网络安全教育课在哪里看
淘气侠服务器
大庆软件开发公司名字
金山区运营软件开发口碑推荐
龙岗区服务器机柜
软件开发 接口 模块内
伊犁网络技术发展
地形图数据库及其主要特点
冬奥场馆网络安全保卫任务
乐陵软件开发
国家网络安全宣传周组委会
中大研究生网络安全
银行信息科技工作与互联网
绝地求生有多少服务器
网络安全问题以及解决办法
数据库怎么重新注册
数据库中一个下划线是几个字
数据库照片
数据库系统概论第四版考试
win7更改服务器密码
网络服务器ip
人的靶基因预测数据库
贵州天使网络技术
数据库表格原料
联想r650服务器管理口