Mapreduce读取Hbase表,写数据到一个Hbase表中
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表中的更多相关文章
- MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。
MySQL如果频繁的修改一个表的数据,那么这么表会被锁死.造成假死现象. 比如用Navicat等连接工具操作,Navicat会直接未响应,只能强制关闭软件,但是重启后依然无效. 解决办法: 首先执行: ...
- 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...
- 数据结构中La表的数据合并到Lb表中
实验描述:La表中的数据为(3,5,8,11) Lb 表中的数据为(2,6,8,9,11,15,20) 将La表中的数据而不存在Lb表的数据插入到Lb表中,从而实现并集操作. 出现的问题:最后实现的 ...
- 一个数据表通过另一个表更新数据(在UPDAT语句中使用FROM子句)
在sql server中,update可以根据一个表的信息去更新另一个表的信息. 首先看一下语法: update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHE ...
- MySQL 数据库中如何把A表的数据插入到B表?
web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码 ...
- oracle 将数据库的表复制到另一个数据库表内
将数据库A中的表sys_role复制到数据库B中在数据库b中的SQL工作表写如下代码: 第一步:建立链接 CREATE database link A //数据库名称CONNECT to text ...
- 如何把一个excel工作薄中N个工作表复制到另一个工作薄中
一般遇到标题这样的情况,许多人可能会一个一个的复制粘贴,其实完全不必那么麻烦. 你可以按以下步骤来操作: 第一步:打开所有要操作的excel工作薄\n 第二步:按住Shift键,选择所有要复制的工作表 ...
- FileWriter实现从一个文件中读取内容并写到另一个文件中
FileWriter和FileOutputStream都是向文件写内容,区别是前台一次写一个字符,后者一次写一个字节 package com.janson.day20180827; import ja ...
- FileOutputStream将从一个文件中读取的内容写到另一个文件中
package com.janson.day2018082 import java.io.FileInputStream; import java.io.FileNotFoundException; ...
随机推荐
- PowerDesigner建立与数据库的连接,以便生成数据库和从数据库生成到PD中。
第一步,打开PD15,找到[Database],如图所示: 第二步,点击新建按钮,创建一个新的ODBC连接. 第三步,这里选择系统数据源,并选择Oracle 第四步,这里需要注意,服务器需要写的是Or ...
- ajax请求(二),后台返回的JSon字符串的转换
ajax请求,json的转换 $.ajax({ url : "../folder/isExistAddFolder.do?t="+new Date(), type : 'POST' ...
- android 单词
inflate: 胀, 膨, 通货膨胀, 膨胀系数
- Elasticsearch学习笔记
Why Elasticsearch? 由于需要提升项目的搜索质量,最近研究了一下Elasticsearch,一款非常优秀的分布式搜索程序.最开始的一些笔记放到github,这里只是归纳总结一下. 首先 ...
- 使用Java API创建(create),查看(describe),列举(list),删除(delete)Kafka主题(Topic)
使用Kafka的同学都知道,我们每次创建Kafka主题(Topic)的时候可以指定分区数和副本数等信息,如果将这些属性配置到server.properties文件中,以后调用Java API生成的主题 ...
- 【第三篇】说说javascript处理时间戳
在做datagrid的时候,从数据库读出来的数据是/Date(1437705873240)/大概是这种形式,这个就是时间戳 我们需要把/Data和/去掉,才可以转成我们要的格式. 上代码 { fiel ...
- BZOJ 4269 再见Xor
线性基. 求次大值就是再异或一个线性基好了. #include<iostream> #include<cstdio> #include<cstring> #defi ...
- wx菜单栏
#include "MainFrame.h" BEGIN_EVENT_TABLE(MyFrame,wxFrame) EVT_MENU(wxID_FILE,MyFrame::OnMe ...
- scala学习笔记(2)
1 Loop (1) for (i <- 1 to 3){ # 1 2 3 } (2) for (i <- 1 until 3){ #1 2 } (3)过滤 for (i <- 1 ...
- HDU 产生冠军 2094
解题思路:这题重在分析,可能你知道的越多,这题想得越多,什么并查集,什么有向图等. 事实是,我们会发现,只要找到一个,并且仅有一个的入度为0的点,说明可以找出 冠军.若入度为0的点一个都没有,说明 ...