public class LabelJob
{ public static void main(String[] args)
throws Exception
{
Job job = Job.getInstance(new Configuration());
job.setJarByClass(LabelJob.class);
job.setJobName("Hbase.LabelJob"); Configuration conf = job.getConfiguration();
conf.set("tablename", "product_tags"); Scan scan = new Scan();
scan.setCaching(500);
scan.setCacheBlocks(false);
//输入表
TableMapReduceUtil.initTableMapperJob("tb_user", scan, LabelMapper.class, Text.class, Text.class, job); job.setReducerClass(LabelReducer.class);
//输出表
TableMapReduceUtil.initTableReducerJob("usertags", LabelReducer.class, job);
job.waitForCompletion(true); } }

  

public class LabelMapper extends TableMapper<Text, Text>
{
protected void setup(Context context)
throws IOException, InterruptedException
{
super.setup(context);
String tablename = context.getConfiguration().get("tablename");
.................
}
protected void map(ImmutableBytesWritable rowKey, Result result, Context context)
throws IOException, InterruptedException
{
String userid = Bytes.toString(rowKey.get()); // 读取HBase用户表rowkey String strlabel = fhb.getStringValue(result, "labels", "label");
String[] userLabels = strlabel.split(",");
....................
}
}

  

public class LabelReducer extends TableReducer<Text, Text, ImmutableBytesWritable>
{
@Override
public void reduce(Text key, Iterable<Text> values, Context context)
throws IOException, InterruptedException
{
String rowKey = key.toString();// 读取Map输出
for (Text v : values)
{
String tag = v.toString();
Long count = tagMap.get(tag);
tagMap.put(tag, (count == null) ? 1 : (count + 1));// 计数
}
Put put = new Put(productId.getBytes());
put.add("prodtags".getBytes(), "prodtags".getBytes(),outputlabel.toString().getBytes()); context.write(new ImmutableBytesWritable(productId.getBytes()), put); } }

  

Mapreduce读取Hbase表,写数据到一个Hbase表中的更多相关文章

  1. MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。

    MySQL如果频繁的修改一个表的数据,那么这么表会被锁死.造成假死现象. 比如用Navicat等连接工具操作,Navicat会直接未响应,只能强制关闭软件,但是重启后依然无效. 解决办法: 首先执行: ...

  2. 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表

    原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...

  3. 数据结构中La表的数据合并到Lb表中

    实验描述:La表中的数据为(3,5,8,11)  Lb 表中的数据为(2,6,8,9,11,15,20) 将La表中的数据而不存在Lb表的数据插入到Lb表中,从而实现并集操作. 出现的问题:最后实现的 ...

  4. 一个数据表通过另一个表更新数据(在UPDAT语句中使用FROM子句)

    在sql server中,update可以根据一个表的信息去更新另一个表的信息. 首先看一下语法: update A SET 字段1=B表字段表达式, 字段2=B表字段表达式   from B WHE ...

  5. MySQL 数据库中如何把A表的数据插入到B表?

    web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码 ...

  6. oracle 将数据库的表复制到另一个数据库表内

    将数据库A中的表sys_role复制到数据库B中在数据库b中的SQL工作表写如下代码: 第一步:建立链接 CREATE database link A //数据库名称CONNECT to text  ...

  7. 如何把一个excel工作薄中N个工作表复制到另一个工作薄中

    一般遇到标题这样的情况,许多人可能会一个一个的复制粘贴,其实完全不必那么麻烦. 你可以按以下步骤来操作: 第一步:打开所有要操作的excel工作薄\n 第二步:按住Shift键,选择所有要复制的工作表 ...

  8. FileWriter实现从一个文件中读取内容并写到另一个文件中

    FileWriter和FileOutputStream都是向文件写内容,区别是前台一次写一个字符,后者一次写一个字节 package com.janson.day20180827; import ja ...

  9. FileOutputStream将从一个文件中读取的内容写到另一个文件中

    package com.janson.day2018082 import java.io.FileInputStream; import java.io.FileNotFoundException; ...

随机推荐

  1. Linux音频编程指南

    Linux音频编程指南 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序 ...

  2. ubuntu下如何查看用户登录及系统授权相关信息【转】

    转自:http://www.tuicool.com/articles/ia67Bj 如何在ubuntu下查看相关用户登录历史,进行系统的日志跟踪和分析,以便发现系统登录问题,进行安全策略防护呢?ubu ...

  3. H5移动前端完美布局之padding

    序上次的提到了H5移动前端完美布局之-margin百分比的使用margin-top(left,right,bottom)的百分比在移动页面布局中对上下左右距离的处理,攻下城外再攘城内,今天看看padd ...

  4. 基于Linux的oracle数据库管理 part4( shell管理 上 )

    主要内容 1. shell 基础补充 2. shell脚本与 SQL*PLUS shell 基础补充 - $(()) 中内容被看做是算术表达式, 其中的变量有没有”$”都可以, 例如 result = ...

  5. 我的Linux书架

    原文地址www.cnblogs.com/wwang/archive/2011/01/27/1944406.html 工作几年来,一直从事Linux内核驱动方面的开发.从接触Linux到现在,读过不少L ...

  6. minimum-number-of-arrows-to-burst-balloons(还挺好)

    https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/ 与会议室排期问题,很相似. package com. ...

  7. ERROR 1442 (HY000):because it is already used by statement which invoked this stored function/tr

    看到mysql的触发器,随手写了一个: mysql> create trigger t_ai_test -> after insert on test -> for each row ...

  8. DataGridView 相关操作

    一.单元格内容的操作// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Consol ...

  9. java.util.logging.Logger使用详解

    一.创建Logger对象   static Logger getLogger(String name)           为指定子系统查找或创建一个 logger. static Logger ge ...

  10. MVC+Ef项目(1) 项目的框架搭建

    一:首先我们来搭建最基本的项目框架,这里使用MVC3作为web项目,然后我们添加几个类库项目 最后的项目如下, 其中有一个 YouJiao.MvcWeb.Repository 实际就当做是 DAL层即 ...