博客
关于我
Hadoop_Scala操作Hbase
阅读量:298 次
发布时间:2019-03-04

本文共 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/

你可能感兴趣的文章
企业API接口设计之token、timestamp、sign具体实现
查看>>
不懂别瞎搞!Redis 性能优化的 13 条军规!
查看>>
卸载 Navicat!事实已证明,正版客户端,它更牛逼……
查看>>
想彻底了解maven,有这篇文章足够了(中)
查看>>
Intellij IDEA 一些让人爱不释手的小技巧
查看>>
idea连接服务器远程调试(Dockerfile版)
查看>>
ElasicJob分布式定时任务
查看>>
feign调用上传文件接口(MultipartFile)
查看>>
centos 文件格式不对执行报错 || centos查看或者修改文件格式
查看>>
win锁屏界面用户名修改
查看>>
Java设计模式 —— 桥接模式(Bridge)
查看>>
计算机三级 信息安全技术历年真题(二)总共十套 3月底之前更完
查看>>
详解: 最小生成树
查看>>
[编程题]:n头牛中选择满足所有m种特性的牛(百度2021)
查看>>
Redis中的删除策略和逐出算法
查看>>
[数据结构]:红黑树(二)
查看>>
Ubuntu切换到root用户无法找到环境变量PATH的问题
查看>>
PyCharm安装与配置
查看>>
关于Java的List的笔记
查看>>
Docker - 部署 Redis 6.0.8
查看>>