val conf=HBaseConfiguration.create()
//Connection 的創建是個重量級的工作,線程安全,是操作hbase的入口
val conn=ConnectionFactory.createConnection(conf)
//從Connection獲得 Admin 對象(相當於以前的 HAdmin)
val admin=conn.getAdmin
//本例將操作的表名
val userTable=TableName.valueOf(tablename)
if(admin.tableExists(userTable)){
println("Table exists!")
//admin.disableTable(userTable)
//admin.deleteTable(userTable)
//exit()
}else{
val tableDesc=new HTableDescriptor(userTable)
tableDesc.addFamily(new HColumnDescriptor(cf.getBytes))
admin.createTable(tableDesc)
println("Create table success!")
}
val table=conn.getTable(userTable)
//準備插入一條 key 爲 id001 的數據
val p=new Put("id001".getBytes())
//爲put操作指定 column 和 value (以前的 put.add 方法被棄用了)
p.addColumn(cf.getBytes,qulified.getBytes,"value1".getBytes)
table.put(p)
//查詢某條數據
val g=new Get("id001".getBytes)
val result=table.get(g)
val value=Bytes.toString(result.getValue(cf.getBytes,qulified.getBytes))
println("GET id001:"+value)
//掃描數據
val s = new Scan()
s.addColumn(cf.getBytes,qulified.getBytes)
val scanner = table.getScanner(s)
try{
for(r <- scanner){
println(cf+":"+qulified+"="+Bytes.toString(r.getValue(cf.getBytes,qulified.getBytes)))
}
}finally {
//確保scanner關閉
scanner.close()
}
//刪除某條數據,操作方式與 Put 類似
val d = new Delete("id001".getBytes)
d.addColumn(cf.getBytes,qulified.getBytes)
table.delete(d)
table.close()
conn.close()