
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); } } }
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月13日 18时46分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【洛谷_P1433】吃奶酪
2019-03-03
volatile关键字和AtomicInteger
2019-03-03
redisTemplate.opsForHash()
2019-03-03
maven生命周期
2019-03-03
方法的绑定机制-静态绑定和动态绑定
2019-03-03
setnx
2019-03-03
Java取绝对值
2019-03-03
线程的start()方法
2019-03-03
编写测试用例的实用小技巧
2019-03-03
c语言贪吃蛇控制台版
2019-03-03
Windows10 下springboot应用无法被外部网络访问
2019-03-03
【树形dp】P1273 有线电视网
2019-03-03
【最短路】P4408 [NOI2003]逃学的小孩
2019-03-03
2020电工(初级)考试及电工(初级)考试软件
2019-03-03
2020N1叉车司机模拟考试题库及N1叉车司机复审模拟考试
2019-03-03
2020年制冷与空调设备运行操作答案解析及制冷与空调设备运行操作考试总结
2019-03-03