Hadoop_Scala操作Hbase
发布日期:2021-05-07 00:19:18 浏览次数:5 分类:技术文章

本文共 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);    }  }  }

 

上一篇:Hadoop-Java操作Hive 2020-01-05
下一篇:Hadoop_Java操作Hbase

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月13日 18时46分32秒