博客
关于我
Hadoop_Scala操作Hbase
阅读量:300 次
发布时间: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/

你可能感兴趣的文章
网关程序的开发
查看>>
SpringBoot(Spring IOC 和 Spring MVC)(待补充)
查看>>
变量命名的通用规则
查看>>
MFC中精确获取时间并且计算事情所用时间
查看>>
鸡啄米之VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)
查看>>
Linux系统基本操作命令
查看>>
程序员职业划分
查看>>
MFC使用opencv在picture控件上面播放摄像头视频
查看>>
浪潮服务器电脑BOOST界面设置开机启动
查看>>
C++开源网络库(Socket library)
查看>>
六祎-Photoshop快捷键
查看>>
【六袆-Java】哈希算法内存图;set集合低层采用哈希表存储元素;哈希算法的流程
查看>>
转---原码,反码,补码的深入理解与原理。
查看>>
浅谈C++ 标准库中的异常 —— stdexcept类
查看>>
【浅谈】main函数的三个参数
查看>>
函数指针
查看>>
Ubuntu安装软件以及查看已安装软件的几种方式
查看>>
ubuntu18.04利用fdisk找到磁盘空闲区,新建分区,挂载
查看>>
《凸优化》中科大-讲解 -系列笔记(汇总55/55)
查看>>
STL教程:C++ STL快速入门(非常详细)
查看>>