您好,登錄后才能下訂單哦!
一、應用線程導入
1、創(chuàng)建put方法
public class mmm{ public static Configuration config=new Configuration();; static{ config.set("hbase.zookeeper.property.clientPoint","2181"); config.set("hbase.zookeeper.quorum","hbase"); config.set("dfs.socket.timeout", "180000"); } public static void put(String tablename,String RowKey,String Family,String Qualifier,String Value){ HTable h=null; try{ h=new HTable(config,tablename); Put put=new Put(Bytes.toBytes(RowKey)); put.add(Bytes.toBytes(Family), Bytes.toBytes(Qualifier), Bytes.toBytes(Value)); h.put(put); }catch(Exception e){e.printStackTrace();}finally{ try { h.close(); } catch (IOException e) { e.printStackTrace(); } } } }
2、創(chuàng)建線程
public class PutXX { public static void main(String[] args) { run1 r1=new run1(); Thread rr1=new Thread(r1); rr1.start(); run2 r2=new run2(); Thread rr2=new Thread(r2); rr2.start(); //這里創(chuàng)建兩個線程,需要可以繼續(xù)創(chuàng)建~ } } class run1 implements Runnable{ public void run() { for(int i=0;i<=10000000;i++){ mmm.put("yuan", ""+i+"", "property", "yuan_name", "xx"+i); System.out.println(i); } } } class run2 implements Runnable{ public void run() { for(int i=10000001;i<=20000000;i++){ mmm.put("yuan", ""+i+"", "property", "yuan_name", "xx"+i); System.out.println(i); } } }
<2015.2.2>
數據導入速度慢。之前put方法每執(zhí)行一次就要new一個新HTable然后釋放資源。。太墨跡了
新put
public static void NBput(String tablename,int RowKey,String Family,String Qualifier,String Value){ HTable h=null; try { h=new HTable(config,tablename); for(int i=RowKey;i<=(RowKey+10000000);i++){ String row=""+i+""; Put put=new Put(Bytes.toBytes(row)); put.add(Bytes.toBytes(Family), Bytes.toBytes(Qualifier), Bytes.toBytes(Value)); h.put(put); System.out.println(i); } } catch (IOException e) { e.printStackTrace(); }finally{ try { h.close(); } catch (IOException e) { e.printStackTrace(); } } }
修改以后速度明顯提升啊我去!之前那方法太傻缺了。。。。
二、使用List進行put
public class mmm{ public static Configuration config=new Configuration();; static{ config.set("hbase.zookeeper.property.clientPoint","2181"); config.set("hbase.zookeeper.quorum","hbase"); config.set("dfs.socket.timeout", "180000"); } /* * 批量put * */ public static void moreput(String tablename, List<Put> puts){ HTable h=null; try{ h=new HTable(config,tablename); Put put=new Put(Bytes.toBytes("")); puts.add(put); h.put(puts); }catch(Exception e){ e.printStackTrace(); }finally{ try { puts.clear(); h.close(); } catch (IOException e) { e.printStackTrace(); } } } }
然后在主函數中:
List<Put> puts=new ArrayList<Put>(); for(int i=100000;i<=5000000;i++){ System.out.println(i); Put put=new Put(Bytes.toBytes(""+i+"")); put.add(Bytes.toBytes("property"), Bytes.toBytes("yuan_name"), Bytes.toBytes("源網"+i)); puts.add(put); } System.out.println("寫入List完成"); mmm.moreput("yuan", puts);
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。