Hadoop_Scala操作Hbase
package com.lius.hadoop.hbase
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.TableName
import org.apache.hadoop.hbase.client.Connection
import org.apache.hadoop.hbase.client.ConnectionFactory
import org.apache.hadoop.hbase.HTableDescriptor
import org.apache.hadoop.hbase.HTableDescriptor
import org.apache.hadoop.hbase.HColumnDescriptor
import com.sun.org.apache.xalan.internal.xsltc.compiler.ValueOf
import org.apache.hadoop.hbase.client.Put
import org.apache.hadoop.hbase.client.Delete
import com.sun.org.apache.xalan.internal.xsltc.compiler.ValueOf
import org.apache.hadoop.hbase.client.Scan
import org.apache.hadoop.hbase.client.Result
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.CellUtil
import 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);
}
}
}