您好,登錄后才能下訂單哦!
需要引入的jar包(這里的jar包括hbase,hive的UDF,hive的jdbc連接)
java源碼
package com.hbase.jdbc; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.FilterList; import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.util.Bytes; public class HBaseOperate { public static Configuration conf; /* * hbase的基本設置 */ static{ conf = HBaseConfiguration.create(); conf.set("hbase.master", "192.168.1.100:600000"); conf.set("hbase.zookeeper.quorum", "192.168.192.137"); } public static void main(String args[]) throws Exception{ String[] cols = {"age","sex","address"}; String tableName = "userInfo3"; // new HBaseOperate().createTable(tableName, cols); String[] columnValue = {"北京","1","16",}; String[] column = {"baseAddress","baseSex","baseAge"}; // new HBaseOperate().listTable(); // new HBaseOperate().insertData(tableName,"doubi", column, columnValue); // new HBaseOperate().dropTable(tableName); // new HBaseOperate().getRow(tableName, "wj"); // new HBaseOperate().deleteRow(tableName, "wj"); // new HBaseOperate().getAllRow(tableName); // new HBaseOperate().getRowByCondition(tableName); new HBaseOperate().getRowByManyCondition(tableName); } /** * 創建表 */ public void createTable(String tableName,String cols[]) throws Exception{ HBaseAdmin ha = new HBaseAdmin(conf); if(ha.tableExists(tableName)){ System.out.println("表已經存在"); }else{ HTableDescriptor table = new HTableDescriptor(TableName.valueOf(tableName)); for(String c: cols){ HColumnDescriptor col=new HColumnDescriptor(c);//列簇名 table.addFamily(col); } ha.createTable(table); ha.close(); System.out.println("創建表成功!"); } } /** * 刪除表 */ public void dropTable(String tableName) throws Exception{ System.out.println("start drop table!"); HBaseAdmin ha = new HBaseAdmin(conf); ha.disableTable(tableName); ha.deleteTable(tableName); System.out.println("drop table success!"); } /** * 查看所有表 */ public void listTable() throws Exception{ HBaseAdmin ha = new HBaseAdmin(conf); TableName[] tableNames = ha.listTableNames(); for(int i = 0; i < tableNames.length; i ++){ System.out.println(tableNames[i].getNameAsString()); } } /** * 插入數據 */ public void insertData(String tableName, String rowKey, String[] column, String[] columnValue) throws Exception{ System.out.println("start insert table!"); HTable table = new HTable(conf, tableName); HTableDescriptor hd = table.getTableDescriptor(); HColumnDescriptor[] hcds = hd.getColumnFamilies();//最后一列開始 Put put = new Put(rowKey.getBytes()); for(int i = 0; i < hcds.length; i ++){ HColumnDescriptor hcd = hcds[i]; put.add(hcd.getName(), column[i].getBytes(), columnValue[i].getBytes()); //family column value } table.put(put); System.out.println("end insert table!"); } /** * 獲取一行數據 */ public void getRow(String tableName, String key) throws Exception{ System.out.println("start get row!"); HTable table = new HTable(conf, tableName); Get get = new Get(key.getBytes()); Result result = table.get(get); for(Cell cell : result.rawCells()){ System.out.println("row family++++++ " + new String(CellUtil.cloneFamily(cell)) + " row column++++++ " + new String(CellUtil.cloneQualifier(cell)) + " row value ++++++" + new String(CellUtil.cloneValue(cell))); } System.out.println("get row end!"); } /** * 刪除一行數據 */ public void deleteRow(String tableName, String key) throws Exception{ System.out.println("delete row start!"); HTable table =new HTable(conf, tableName); Delete d1 = new Delete(key.getBytes()); table.delete(d1); System.out.println("delete row end!"); } /** * 獲取表所有數據 */ public void getAllRow(String tableName) throws Exception{ System.out.println("get all row start!"); HTable table = new HTable(conf, tableName); Scan s = new Scan(); ResultScanner rs = table.getScanner(s); for(Result result : rs){ for(Cell cell : result.rawCells()){ System.out.println("row key++++++" + new String(CellUtil.cloneRow(cell)) + " row family++++++ " + new String(CellUtil.cloneFamily(cell)) + " row column++++++ " + new String(CellUtil.cloneQualifier(cell)) + " row value ++++++" + new String(CellUtil.cloneValue(cell))); } } System.out.println("get all row end"); } /** * 根據條件查詢記錄 */ public void getRowByCondition(String tableName) throws Exception{ System.out.println("begin query!"); HTable table = new HTable(conf, tableName); Filter filter = new SingleColumnValueFilter(Bytes.toBytes("sex"), Bytes.toBytes("baseAge"), CompareOp.EQUAL, Bytes.toBytes("100")); //family column 比較符號 比較值 Scan s = new Scan(); s.setFilter(filter); ResultScanner rs = table.getScanner(s); for(Result result : rs){ for(Cell cell : result.rawCells()){ System.out.println("row key++++++" + new String(CellUtil.cloneRow(cell)) + " row family++++++ " + new String(CellUtil.cloneFamily(cell)) + " row column++++++ " + new String(CellUtil.cloneQualifier(cell)) + " row value ++++++" + new String(CellUtil.cloneValue(cell))); } } System.out.println("end query!"); } /** * 多條件查詢 */ public void getRowByManyCondition(String tableName) throws Exception{ System.out.println("begin query!"); HTable table = new HTable(conf, tableName); Filter filterSex = new SingleColumnValueFilter(Bytes.toBytes("sex"), Bytes.toBytes("baseAge"), CompareOp.EQUAL, Bytes.toBytes("16")); //family column 比較符號 比較值 Filter filterAge = new SingleColumnValueFilter(Bytes.toBytes("age"), Bytes.toBytes("baseSex"), CompareOp.EQUAL, Bytes.toBytes("1")); //family column 比較符號 比較值 List<Filter> filterList = new ArrayList<Filter>(); filterList.add(filterAge); filterList.add(filterSex); Scan s = new Scan(); FilterList filterListS = new FilterList(filterList); s.setFilter(filterListS); //可以設置查詢結果的開始 和 結束位置(針對的是key值) s.setStartRow("wj".getBytes()); s.setStopRow("wj".getBytes()); ResultScanner rs = table.getScanner(s); for(Result result : rs){ for(Cell cell : result.rawCells()){ System.out.println("row key++++++" + new String(CellUtil.cloneRow(cell)) + " row family++++++ " + new String(CellUtil.cloneFamily(cell)) + " row column++++++ " + new String(CellUtil.cloneQualifier(cell)) + " row value ++++++" + new String(CellUtil.cloneValue(cell))); } } System.out.println("end query!"); } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。