hbase scala 实例_HBase1.2.0增删改查Scala代码实现

classHbaseUtils {/**

* 获取管理员对象

*

* @param conf 对hbase client配置一些参数

* @return 返回hbase的HBaseAdmin管理员对象*/def getAdmin(conf: Configuration): HBaseAdmin={

val conn=ConnectionFactory.createConnection(conf)

conn.getAdmin().asInstanceOf[HBaseAdmin]

}/**

* 根据指定的管理员,表名,列族名称创建表

*

* @param admin 创建HBaseAdmin对象

* @param tName 需要创建的表名

* @param columnFamilys 列族名称的集合*/def createTable(admin: HBaseAdmin, tName: String, columnFamilys: List[String]): Unit={if(admin.tableExists(TableName.valueOf(tName))) {

println("table already exists!")

admin.disableTable(tName)

admin.deleteTable(tName)

}try{

val tableDesc= newHTableDescriptor(TableName.valueOf(tName))

columnFamilys.foreach(columnFamilysName => tableDesc.addFamily(newHColumnDescriptor(columnFamilysName)))

admin.createTable(tableDesc)

println("create table success!")

}catch{case e: Exception =>e.printStackTrace()

}

}/**

* 单条数据插入 根据表名、rowkey、列族名、列名、值、增加数据

*

* @param conf 当前对象的配置信息

* @param tableName 表名

* @param rowKey 行键

* @param columnFamily 列族名称

* @param column 列

* @param value 值*/def insertData(conf: Configuration, tableName: String, rowKey: String, columnFamily: String, column: String, value: String): Unit={

val con=ConnectionFactory.createConnection(conf)

val table=con.getTable(TableName.valueOf(tableName))

val put= newPut(Bytes.toBytes(rowKey))

put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value))

table.put(put)

close(table, con)

print("数据插入成功")

}/**

* 批量插入数据

*

* @param conf 当前对象的配置信息

* @param tableName 表名

* @param rowKey 行键

* @param columnFamily 列族

* @param column 列

* @param value 值*/def batchInsertData(conf: Configuration, tableName: String, rowKey: String, columnFamily: String, column: String, value: String): Unit={

val con=ConnectionFactory.createConnection(conf)

val table: BufferedMutator=con.getBufferedMutator(TableName.valueOf(tableName))

val p= newPut(Bytes.toBytes(rowKey))

p.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value))

val mutations= newutil.ArrayList[Mutation]()

mutations.add(p)

table.mutate(mutations)

table.flush()if (con != null)

con.close()if (table != null)

table.close()

print("数据插入成功")

}/**

* 删除数据

*

* @param conf 当前对象的配置信息

* @param tableName 表名*/def deleteData(conf: Configuration, tableName: String): Unit={

val admin=getAdmin(conf)try{if(admin.tableExists(tableName)) {

admin.disableTable(tableName)

admin.deleteTable(tableName)

}

}catch{case e: Exception =>e.printStackTrace()

}

print("删除数据成功")

}/**

* 根据指定的配置信息全表扫描指定的表

*

* @param conf 配置信息

* @param tableName 表名

* @return Cell单元格数组*/def getByScan(conf: Configuration, tableName: String): ArrayBuffer[Array[Cell]]={var arrayBuffer =ArrayBuffer[Array[Cell]]()

val scanner= newScan()

val conn=ConnectionFactory.createConnection(conf)

val table=conn.getTable(TableName.valueOf(tableName))

val results=table.getScanner(scanner)var res: Result =results.next()while (res != null) {

arrayBuffer+=res.rawCells()

res=results.next()

}

arrayBuffer

}/**

* 根据行键获取具体的某一个行

*

* @param conf 配置信息

* @param tableName 表名

* @param row 行键

* @return Array[Cell]*/def getRow(conf: Configuration, tableName: String, row: String): Array[Cell]={

val con=ConnectionFactory.createConnection(conf)

val table=con.getTable(TableName.valueOf(tableName))

valget = newGet(Bytes.toBytes(row))

val res= table.get(get)

res.rawCells()

}/**

* 删除指定表的指定row数据

*

* @param conf 配置信息

* @param tableName 表名

* @param row 行键*/def delRow(conf: Configuration, tableName: String, row: String): Unit={

val con=ConnectionFactory.createConnection(conf)

val table=con.getTable(TableName.valueOf(tableName))

table.delete(newDelete(Bytes.toBytes(row)))

println("删除数据成功")

}

def close(table: Table, con: Connection): Unit={if (table != null)

table.close()if (con != null)

con.close()

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值