HBase 批量写入数据
/**
* Create by 2020-11-05
* Method: mutate
*/
object Test {
//获取配置参数
val hConfig = HBaseConfiguration.create
//建立连接
val hConnection = ConnectionFactory.createConnection(hConfig)
/**
* 写入一行数据
*
* @param tName 表名
* @param rk rowkey
* @param cf 列簇
* @param qua 列
* @param value 值
*/
def put_single_row(tName: String, rk: String, cf: String, qua: String, value: String) {
val put = new Put(Bytes.toBytes(rk))
put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(qua), Bytes.toBytes(value))
try {
// 通过连接获取Table类对象需要传入TableName对象,即表名
val tbn = TableName.valueOf(tName)
val table = conn.getTable(tbn)
table.put(put)
} catch {
case e: Exception =>
}
}
/**
* 写入多行数据
*
* @param tName 表名
* @param rk rowkey
* @param cf 列簇
* @param qua 列
* @param value 值
*/
def put_many_row(tName: String, rk: String, cf: String, qua: String, value: String): Unit = {
try {
//连接表 获取表对象//连接表 获取表对象
val table = hConnection.getBufferedMutator(TableName.valueOf(tName))
val put = new Put(Bytes.toBytes(rk))
put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(qua), Bytes.toBytes(value))
var mutations = new ArrayList[Mutation]()
mutations.add(put)
table.mutate(mutations)
} finally {
if (table != null) table.close()
connection.close()
}
}
/**
* 获取一行数据中的所有单元格并打印基本信息
*
* @param tName 表名
* @param rk rowkey
*/
def get_row_cells(tName: String, rk: String) {
val get = new Get(Bytes.toBytes(rk))
try {
// 通过连接获取Table类对象需要传入TableName对象,即表名
val tbn = TableName.valueOf(tName)
val table = conn.getTable(tbn)
val res = table.get(get)
val listc = res.listCells()
// val rawc:Array[Cell] = result.rawCells()
for (cell <- listc) {
//调用Cell工具类的cloneXXX方法获取信息
val row: String = Bytes.toString(CellUtil.cloneRow(cell))
val cf: String = Bytes.toString(CellUtil.cloneFamily(cell))
val qua: String = Bytes.toString(CellUtil.cloneQualifier(cell))
val value: String = Bytes.toString(CellUtil.cloneValue(cell))
println("row:" + row + ",cf:" + cf + ",qua:" + qua + ",value:" + value)
}
} catch {
case e: Exception =>
}
}
}