用MapReduce读HBase写MongoDB样例
1、版本信息:
Hadoop版本:2.7.1
HBase版本:1.2.1
MongDB版本:3.4.14
2、HBase表名及数据:

3、Maven依赖:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>org.mongodb.mongo-hadoop</groupId>
<artifactId>mongo-hadoop-core</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>1.1.1</version>
</dependency>
4、MapReduce程序:
package mapreduce; import com.mongodb.BasicDBObject;
import com.mongodb.hadoop.MongoOutputFormat;
import com.mongodb.hadoop.io.BSONWritable;
import com.mongodb.hadoop.util.MongoConfigUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job; import java.io.IOException;
import java.util.UUID; public class HBaseToMongo {
public static void main(String[] args) throws Exception {
Long st = System.currentTimeMillis(); Configuration config = new Configuration();
config.set("dfs.socket.timeout", "180000");
config.set("hbase.zookeeper.property.clientPort", "2181");
config.set("hbase.zookeeper.quorum", "10.11.2.4,10.11.2.5,10.11.2.6"); // The format of the URI is:
// mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
String uri = "mongodb://10.11.2.15:27017,10.11.2.16:27017,10.11.2.17:27017/postal.qch_test";
MongoConfigUtil.setOutputURI(config, uri); Job job = Job.getInstance(config);
job.setJobName("HBaseToMongo");
job.setJarByClass(FilterMapper.class);
job.setOutputFormatClass(MongoOutputFormat.class);
job.setNumReduceTasks(0);
TableMapReduceUtil.initTableMapperJob("qch_t1", new Scan(),
FilterMapper.class, ImmutableBytesWritable.class, BSONWritable.class, job); System.exit( job.waitForCompletion( true ) ? 0 : 1 );
System.out.println("HBaseToMongo:" + (System.currentTimeMillis() - st));
} static class FilterMapper extends TableMapper<Text, BSONWritable> {
@Override
protected void map(ImmutableBytesWritable key,
Result value, Context context) throws IOException, InterruptedException {
String col = getStrByByte(value.getValue("if".getBytes(), "col1".getBytes()));
BSONWritable bsonWritable = new BSONWritable();
BasicDBObject doc = new BasicDBObject();
doc.put("_id", UUID.randomUUID().toString());
doc.put("col", col);
bsonWritable.setDoc(doc);
context.write(new Text(key.toString()), bsonWritable);
} private String getStrByByte(byte[] by) {
String str = "";
if (by != null && by.length > 0) {
str = Bytes.toString(by);
}
return str;
}
}
}
5、运行结果:

6、程序源码:
用MapReduce读HBase写MongoDB样例的更多相关文章
- Spark读HBase写MySQL
1 Spark读HBase Spark读HBase黑名单数据,过滤出当日新增userid,并与mysql黑名单表内userid去重后,写入mysql. def main(args: Array[Str ...
- HBase Filter程序样例及Shell(图)
==过滤器执行流程== reset() : reset the filter state before filtering a new row. filterAllRemaining(): true ...
- hbase java api样例(版本1.3.1,新API)
hbase版本:1.3.1 目的:HBase新API的使用方法. 尝试并验证了如下几种java api的使用方法. 1.创建表 2.创建表(预分区) 3.单条插入 4.批量插入 5.批量插入(客户端缓 ...
- Spring-boot+Spring-batch+hibernate+Quartz简单批量读文件写数据用例
本文程序集成了Spring-boot.Spring-batch.Spring-data-jpa.hibernate.Quartz.H2等.完整代码在Github上共享,地址https://github ...
- Java连接MongoDB样例
package com.moonlit.example; import com.mongodb.BasicDBObject; import com.mongodb.BulkWriteOperation ...
- MapReduce计算每年最大值测试样例生成程序
Demo.java package com.java; import java.io.BufferedWriter; import java.io.File; import java.io.FileW ...
- 使用SALT-API进入集成开发的简单样例
测试的时候,可以CURL -K,但真正作集成的时候,却是不可以的. 必须,不可以让TOKEN满天飞吧. 现在进入这个阶段了.写个样例先: import salt import salt.auth im ...
- hdu1011(树形背包)(提供一个特殊样例)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 Starship Troopers Time Limit: 10000/5000 MS (Jav ...
- hadoop学习;block数据块;mapreduce实现样例;UnsupportedClassVersionError异常;关联项目源代码
对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例 为了方便查看源代码,关联导入源代码的项目 先前的项目导入源代码是关联了源代码文件 block数据块,在配置 ...
随机推荐
- 抽取JDBCTemplate
抽取JDBCTemplate 为了解决DAO实现类中代码的重复问题,另外使得代码更通用,所以抽取一个公共的模板,使其更具有通用性. DAO实现类的代码 public class StudentDAOI ...
- phpstorm 光标设置
1.是否允许光标定位在行尾之后的任意位置Allow placement of caret after end of line 这个设置是上下换行的时候,光标可以定位在任意位置,只能通过方向键移动光标, ...
- 洛谷[P1002]过河卒
原题地址:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...
- Flask 模板语法
Flask中默认的模板语言是Jinja2 STUDENT = {'name': 'Old', 'age': 38, 'gender': '中'}, STUDENT_LIST = [ {'name': ...
- 简化Redis数据访问代码RedisTemplate
---恢复内容开始--- Redis数据结构简介: Redis可以存储键与5中数据结构类型之间的映射,这5中数据结构类型分别是;String(字符串),List(列表),Set(集合),Hash(散列 ...
- charles手机抓包配置-1
1.下载和安装Charles 下载和安装Charles软件.安装前要先安装Java运行环境,因为Charles是Java写的. 自己百度云上有破解版 2.安装电脑的Charles证书,对证书进行信任设 ...
- C#调用Oracle带输出数据集的存储过程
1.创建一个带输出数据集的Oracle存储过程 create or replace procedure PRO_test(in_top in number,cur_out out sys_refcur ...
- mybatis Dynamic SQL
reference: http://www.mybatis.org/mybatis-3/dynamic-sql.html Dynamic SQL One of the most powerful fe ...
- tomcat下载安装和配置
Tomcat服务器 1.Web开发中的常见概念 (1)B/S系统和C/S系统 Brower/Server:浏览器 服务器 系统 ----- 网站 Client/Server:客户端 服务器 系统 -- ...
- 利用Nginx rewrite规则实现域名显性转发
体验更优排版请移步原文:http://blog.kwin.wang/website/nginx-rewrite-realize-domain-forward.html 自己的blog域名最开始用的vb ...