MongoDB数据导入hbase + 代码
需求:
从mongoDB里面查出来数据,判断是否有该列簇,如果有则导入此条数据+列簇,如果没有,则该条数据不包含该列簇 直接贴出代码: package Test; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
import org.bson.Document; import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase; public class OperateTable2 {
private static Configuration conf = null;
static {
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","master.hadoop");
conf.set("hbase.zookeeper.property.clientPort", "2181");
conf.set("hbase.master", "master.hadoop:60000");
}
public static void addRow(String tableName, String row,
String columnFamily, String column, String value) throws Exception {
HTable hTable = new HTable(conf, tableName);
Put put = new Put(Bytes.toBytes(row));
// 参数出分别:列族、列、值
put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
Bytes.toBytes(value));
hTable.put(put); }
public static void main(String[] args) {
// 声明静态配置
String tableName = "house";
String columnFamilys = "info";
int a = 0;
try {
ServerAddress serverAddress = new ServerAddress("42.62.66.9",27017);
List addrs = new ArrayList();
addrs.add(serverAddress);
MongoCredential credential = MongoCredential.createScramSha1Credential("admin",
"admin", "bigmaster654321".toCharArray());
List credentials = new ArrayList();
credentials.add(credential);
//通过认证获取mongoDB的连接
MongoClient mongoClient = new MongoClient(addrs,credentials);
MongoDatabase mongoDatabase = mongoClient.getDatabase("house");
System.out.println("MongoDB Connection-----------------Successfully");
MongoCollection collection = mongoDatabase.getCollection("houses2");
FindIterable findIterable = collection.find();
MongoCursor mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
a=a+1;
Document document = mongoCursor.next();
Set set = document.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
String tags = it.next();
if(tags.equals("_id")){
continue;
}
OperateTable2.addRow(tableName, document.getString("_id"), columnFamilys, tags, document.getString(tags));
}
System.out.println("Insert Into HBase Success"+"This is the "+a+" data");
}
System.out.println("Compelete All Insert");
} catch (Exception e) {
// TODO: handle exception
System.err.println(e.getClass().getName()+ ":" +e.getMessage());
}
}
} 我这里是用_id为hbase的rowkey,列为info,代码无误,根据需求可以改动,关键在于两个while判断的地方,那里最容易出错,导入mysql也可以用此代码改动取值的地方和jdbc连接进行导入 需要用到的包:mongo-java-driver-3.2.2.jar,hbase常用的包可以全导 代码如上,原创转载注明出处!
MongoDB数据导入hbase + 代码的更多相关文章
- python 全栈开发,Day126(创业故事,软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON)
作业讲解 下载代码: HBuilder APP和flask后端登录 链接:https://pan.baidu.com/s/1eBwd1sVXTNLdHwKRM2-ytg 密码:4pcw 如何打开APP ...
- 软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON
全局变量 由于多个html页面,需要引用同一个变量.这个时候,需要定义一个全局变量!如何定义呢? 默认包含了mui的html文件都导入mui.js文件.那么将变量写在mui.js中,就可以实现所有页面 ...
- MapReduce将HDFS文本数据导入HBase中
HBase本身提供了很多种数据导入的方式,通常有两种常用方式: 使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase 另一种方式就是使用HB ...
- Sqoop将mysql数据导入hbase的血与泪
Sqoop将mysql数据导入hbase的血与泪(整整搞了大半天) 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明出处: https://my.oschina.net/yunsh ...
- 通过logstash-input-mongodb插件将mongodb数据导入ElasticSearch
目的很简单,就是将mongodb数据导入es建立相应索引.数据是从特定的网站扒下来,然后进行二次处理,也就是数据去重.清洗,接着再保存到mongodb里,那么如何将数据搞到ElasticSearch中 ...
- sqoop将mysql数据导入hbase、hive的常见异常处理
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10700700.html,否则将追究法律责任!!! 一.需求: 1.将以下这张表(test_ ...
- 使用sqoop将MySQL数据库中的数据导入Hbase
使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-con ...
- mongodb数据导入导出以及备份恢复
昨日在公司收到游戏方发来一个1G多的数据文件,要求导入联运账号中.细细一看,纳尼!文件竟然是BSON格式. 哇塞,这不是去年给大家分享的NoSql中的MongoDB的备份文件吗? 于是搭好环境 1.启 ...
- Oracle数据导入Hbase操作步骤
——本文非本人原创,为公司同事整理,发布至此以便查阅 一.入库前数据准备 1.入hbase详细要求及rowkey生成规则,参考文档“_入HBase库要求 20190104.docx”. 2.根据标准库 ...
随机推荐
- 结合两张表person和address
Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...
- 存储过程,游标,异常捕捉 try catch 实例代码
1.存储过程代码. (数据库是 AdventureWorks) 存储过程用来将错误信息插入到指定的表中. 在别的地方可以调用存储过程插入错误信息(下面部分代码 生成一个表,如果表已经存在就会插入错误 ...
- SQL SERVER 集合
死锁和堵塞一直是性能测试执行中关注的重点. 下面是我整理的监控sql server数据库,在性能测试过程中是否出现死锁.堵塞的SQL语句,还算比较准备,留下来备用. --每秒死锁数量 SELECT * ...
- Android环境配好的标志
Window —> preference —> android
- hdu2665 主席树(可持久化线段树)
题意:给定一个数组,每次查询第l到r区间的第k大值 解法嘛,当然是主席树,主席树即可持久化线段树,什么叫可持久化呢,就是指能够访问历史版本的数据结构,那么对于某些只能离线处理的题目强制在线之后 ,可以 ...
- centos ifcfg-eth0
DEVICE=eth0IPADDR=192.168.1.117NETMASK=255.255.255.0GATEWAY=192.168.1.1ONBOOT=yes
- ItelliJ IDEA下载及获取注册码详解
Idea安装很简单: 官网地址下载:https://www.jetbrains.com/idea/ 注册码获取:http://idea.lanyus.com/ 进入此网址,点击“获得注册码”复制使 ...
- 04-THREE.JS 添加、删除物体,批量操作
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- 设置cookie的保存时间 下一篇
设置cookie的保存时间,通过cookie的expires性质指定一个终止时间就可以了.也就是说,你在设置cookie的时候,你的cookie字串要像下面这样组合: var d= new Date( ...
- nyoj-78-圈水池(Graham算法求凸包)
题目链接 /* Name:nyoj-78-圈水池 Copyright: Author: Date: 2018/4/27 9:52:48 Description: Graham求凸包 zyj大佬的模板, ...