日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB数据导入hbase + 代码

發布時間:2024/6/21 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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常用的包可以全導代碼如上,原創轉載注明出處!

?

轉載于:https://www.cnblogs.com/tnsay/p/5752709.html

總結

以上是生活随笔為你收集整理的MongoDB数据导入hbase + 代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。