本文共 4387 字,大约阅读时间需要 14 分钟。
Hadoop_Scala操作Hbase
package com.lius.hadoop.hbaseimport org.apache.hadoop.hbase.HBaseConfigurationimport org.apache.hadoop.hbase.TableNameimport org.apache.hadoop.hbase.client.Connectionimport org.apache.hadoop.hbase.client.ConnectionFactoryimport org.apache.hadoop.hbase.HTableDescriptorimport org.apache.hadoop.hbase.HTableDescriptorimport org.apache.hadoop.hbase.HColumnDescriptorimport com.sun.org.apache.xalan.internal.xsltc.compiler.ValueOfimport org.apache.hadoop.hbase.client.Putimport org.apache.hadoop.hbase.client.Deleteimport com.sun.org.apache.xalan.internal.xsltc.compiler.ValueOfimport org.apache.hadoop.hbase.client.Scanimport org.apache.hadoop.hbase.client.Resultimport org.apache.hadoop.hbase.util.Bytesimport org.apache.hadoop.hbase.CellUtilimport org.apache.hadoop.hbase.client.Get/** * Scala操作Hbase */object scalaHbase { def main(args:Array[String]):Unit={ //创建一个配置 val conf = HBaseConfiguration.create conf.set("hbase.zookeeper.quorum", "hadoop1,hadoop2") conf.set("hbase.zookeeper.property.clientPort", "2181") //Connection的创建是重量级的工作,线程安全,是操作HBase的入口 val connection = ConnectionFactory.createConnection(conf); //创建表// createTable(connection,"testDB"); //插入记录// insertData(connection,"testDB","userName","xiaoming","001","123");// insertData(connection,"testDB","userName","marry","001","123");// insertData(connection,"testDB","userName","xiaoming","002","456");// insertData(connection,"testDB","userName","marry","002","456"); //删除记录// deleteRecord(connection,"testDB","userName","xiaoming","001") //扫描整个表// scanRecord(connection,"testDB","userName","marry");// getAResult(connection,"testDB","userName","marry","002"); //删除表 deleteTable(connection,"testDB") connection.close } /** * 删除表 */ def deleteTable(connection:Connection,tableName:String):Unit={ val admin = connection.getAdmin val tabName = TableName.valueOf(tableName) if(admin.tableExists(tabName)){//删除表 admin.disableTable(tabName) admin.deleteTable(tabName) } } /** * 查询单条数据 */ def getAResult(connection:Connection,tableName:String,family:String,columnValue:String,key:String):Unit={ val tabName = TableName.valueOf(tableName) val tab = connection.getTable(tabName) val get = new Get(key.getBytes) val result = tab.get(get) val value = Bytes.toString(result.getValue(family.getBytes, columnValue.getBytes)) System.out.println(String.format("value:%s", value)) tab.close } /** * 扫描整个表 */ def scanRecord(connection:Connection,tableName:String,family:String,columnName:String):Unit={ val tabName = TableName.valueOf(tableName) val tab = connection.getTable(tabName) val scan = new Scan() scan.addColumn(family.getBytes, columnName.getBytes) val rs = tab.getScanner(scan) rs.forEach(r =>{ val cells = r.listCells() cells.forEach(cell => { System.out.println(String.format("row:%s family:%s quarify:%s value:%s", Bytes.toString(CellUtil.cloneRow(cell)), Bytes.toString(CellUtil.cloneFamily(cell)), Bytes.toString(CellUtil.cloneQualifier(cell)), Bytes.toString(CellUtil.cloneValue(cell)))) }) }) tab.close } /** * 删除记录 */ def deleteRecord(connection:Connection,tableName:String,family:String,columnName:String,key:String):Unit={ val tabName = TableName.valueOf(tableName) val tab = connection.getTable(tabName) val delete = new Delete(key.getBytes); delete.addColumn(family.getBytes,columnName.getBytes); tab.delete(delete) } /** * 插入记录 */ def insertData(connection:Connection,tableName:String,family:String,columnName:String,key:String,value:String):Unit={ val tabName = TableName.valueOf(tableName); val tab = connection.getTable(tabName); val put = new Put(key.getBytes); put.addColumn(family.getBytes, columnName.getBytes, value.getBytes) tab.put(put)//提交 } /** * 创建表 */ def createTable(connection:Connection,tableName:String):Unit={ val admin = connection.getAdmin val tabName = TableName.valueOf(tableName); if(!admin.tableExists(tabName)){ val tableDescripter = new HTableDescriptor(tabName); tableDescripter.addFamily(new HColumnDescriptor("userName")); tableDescripter.addFamily(new HColumnDescriptor("password")); admin.createTable(tableDescripter); } } }
转载地址:http://ksnq.baihongyu.com/