MapReduce、Hbase接口API实践
读取hdfs中文件并做处理,取出卡号,通过卡号连接hbase查询出对应客户号,写入redis,因为不用输出,所以不调用context.write方法,整个操作在一个map中便可完成
protected HTable connect
//setup方法被MapReduce框架仅且执行一次,在执行Map任务前,进行相关变量或者资源的集中初始化工作。若是将资源初始化工作放在方法map()中,导致Mapper任务在解析每一行输入时都会进行资源初始化工作,导致重复,程序运行效率不高!
protected void setup(Context context) throws IOExcption,InterruptedException{
super.setup(context)
String jobName = context.getJobName();
//文件索引值
cartNoIndex = conf.get(jobName + "source.key","7");
//创建hbase连接,hbase-site.xml配置文件需要在jar包中
Configuration config = HBaseConfiguration.create();
connect = new HTable(config,"tableName")
} protected void map(writable key,Text value,Context context){
if(value == null || value.toString().trim().isEmpty()){
//计数器,记录处理的条数
context.getCounter(....).increment(1);
}else{
String[] values = Utils.split(value,separator,true);
//业务逻辑处理
int i = Integer.parseInt(cartNoIndex);
if(i<values.length){
cardNo = values[i];
}else{
logger.error("cardNo cannot find");
} //从hbase中查询出对应客户号
String rowkey = HTableManager.generatRowkey(cardNo);
Get getResult = new Get(rowkey.getBytes());
Result rs = connect.get(getResult);
String curNo = Bytes.toString(rs.getValue("f1".getBytes(),"column_name".getBtes());
RedisClient.getRedisClient().zincrbyset("spending:rank",countNum,custNo); protected void cleanup(context context)throws IOException,InterruptedException{
super.cleanup(context);
connect.close();
}
public static String[] split(String value,String separator,boolean trimSpace){
String[] rtn = split(value.separator);
if(trimSpace && rtn != null){
for(int i=0;i<rtn.length;i++){
rtn[i] = rtn[i].trim();
}
}
return rtn;
}
public static String[] split(String value,String separator){
String[] rtn = null;
if(value != null){
boolean endBlank = false;
if(value.endsWith(separator)){
value +=" ";
endBlank = true;
}
separator = escapeExprSpecialWord(deparator);
if(endBlank){
rtn(rtn.length-1) = "";
}
}
return rtn;
}
public static String escapeExprSpecialWord(String keyWord){
if(keyword != null && !keyword.isEmpty()){
String[] fbsArr = {"\\","|","(",")"};
for(String key : fbsArr){
if(keyword.contains(key){
keyword = keyword.replace(key,"\\"+key);
}
}
}
return keyword;
}
MapReduce、Hbase接口API实践的更多相关文章
- hbase rest api接口链接管理【golang语言版】
# go-hbase-resthbase rest api接口链接管理[golang语言版]关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/boo ...
- 3、大型项目的接口自动化实践记录----开放API练习
开始做实际项目前,先拿个网上的简单API练下手 一.API说明: 接口信息 接口名:京东获取单个商品价格 地址:http://p.3.cn/prices/mgets 入参:skuids=J_商品ID& ...
- Hbase客户端API基础小结笔记(未完)
客户端API:基础 HBase的主要客户端接口是由org.apache.hadoop.hbase.client包中的HTable类提供的,通过这个类,用户可以完成向HBase存储和检索数据,以及删除无 ...
- MapReduce/Hbase进阶提升(原理剖析、实战演练)
什么是MapReduce? MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",和他们 ...
- 【原创 Hadoop&Spark 动手实践 3】Hadoop2.7.3 MapReduce理论与动手实践
开始聊MapReduce,MapReduce是Hadoop的计算框架,我学Hadoop是从Hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能 ...
- HBase学习与实践
Photo by bealach verse on Unsplash 参考书籍:<HBase 权威指南> -- Lars George著. 文章为个人从零开始学习记录,如有错误,还请不吝赐 ...
- HBase伪分布式环境下,HBase的API操作,遇到的问题
在hadoop2.5.2伪分布式上,安装了hbase1.0.1.1的伪分布式 利用HBase的API创建个testapi的表时,提示 Exception in thread "main&q ...
- ASP.NET Web API实践系列04,通过Route等特性设置路由
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...
- (转载)Linux系统调用及用户编程接口(API)
(转载)http://www.farsight.com.cn/news/emb167.htm 1 Linux系统调用 所谓系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组 ...
随机推荐
- java 获取系统当前时间
Calendar ca = Calendar.getInstance(); int year = ca.get(Calendar.YEAR);//获取年份 int month=ca ...
- Android开发--LinearLayout的应用
1.简介 LinearLayout为安卓三大常用布局中的线性布局.其中,线性布局又分为水平线性布局和垂直线性布局.视图如下所示:
- 求助,JS 方法调用的问题,写了返回值,确调用时返回Undefined(新人第一次写)
文本框txtUserName 的Onbulr 绑定方法 txtUserNameOnblur 这可以正常执行 而下面的btnRegister 的click 事件则无法正常调用 txtUserNa ...
- QML的一些基础的区分
什么时候用Item什么时候用Rectangle? 什么时候用Row什么时候用RowLayout? 这2个问题经常会让人迷糊. 什么时候用Item,就是你要做一个组件,这个组件是一个复合的组件,组件有部 ...
- [强连通分量] POJ 2762 Going from u to v or from v to u?
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17089 ...
- 爬虫:pycurl模块的使用说明
pycurl参考文档:http://pycurl.io/docs/latest/index.html 是英文文档,看起来也不是特么吃力跟着做问题不大. #coding=utf-8 import p ...
- Serv-U FTP之PASV和PORT模式
Serv-U 设置好后,访问,却提示如下错误:ftp服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹.在解决此问题前,我亲自遇到该问题,看看我查的资料 FTP的连接一般是有两个连接的,一个是客 ...
- Ubuntu中添加eclipse
环境:Ubuntu 14.04 步骤: 1.安装配置JDK,详见 http://my.oschina.net/u/1407116/blog/227084 2.下载eclipse 从官网http://w ...
- HANS123
//策略:HANS123//周期:日内//类别:趋势突破 作为外汇市场上广为流行的一种突破交易策略,HANS123以其简洁的开盘后N根K线的高低点突破,作为交易信号触发的评判标准.这也是一种入场较早的 ...
- Jquery EasyUI DataGrid .net实例
前台界面:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...