mysql mongodb hbase_MongoDB数据导入hbase + 代码

需求:

从mongoDB里面查出来数据,判断是否有该列簇,如果有则导入此条数据+列簇,如果没有,则该条数据不包含该列簇

直接贴出代码:packageTest;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.util.Set;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.client.HTable;importorg.apache.hadoop.hbase.client.Put;importorg.apache.hadoop.hbase.util.Bytes;importorg.bson.Document;importcom.mongodb.MongoClient;importcom.mongodb.MongoCredential;importcom.mongodb.ServerAddress;importcom.mongodb.client.FindIterable;importcom.mongodb.client.MongoCollection;importcom.mongodb.client.MongoCursor;importcom.mongodb.client.MongoDatabase;public classOperateTable2 {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 voidaddRow(String tableName, String row,

String columnFamily, String column, String value)throwsException {

HTable hTable= newHTable(conf, tableName);

Put put= newPut(Bytes.toBytes(row));//参数出分别:列族、列、值

put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),

Bytes.toBytes(value));

hTable.put(put);

}public static voidmain(String[] args) {//声明静态配置

String tableName = "house";

String columnFamilys= "info";int a = 0;try{

ServerAddress serverAddress= new ServerAddress("42.62.66.9",27017);

List addrs= newArrayList();

addrs.add(serverAddress);

MongoCredential credential= MongoCredential.createScramSha1Credential("admin","admin", "bigmaster654321".toCharArray());

List credentials= newArrayList();

credentials.add(credential);//通过认证获取mongoDB的连接

MongoClient mongoClient = newMongoClient(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常用的包可以全导

代码如上,原创转载注明出处!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值