scala使用hbase新api

import org.apache.hadoop.hbase.{HTableDescriptor,HColumnDescriptor,HBaseConfiguration,TableName}
import org.apache.hadoop.hbase.client.{ConnectionFactory,Put,Get,Delete,Scan}
import org.apache.hadoop.hbase.util.Bytes
import scala.collection.JavaConversions._
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()
name := "HTest"

version := "1.0"

scalaVersion := "2.10.6"

libraryDependencies++= Seq(
  "mysql" % "mysql-connector-java" % "5.1.38",
  "org.apache.spark" %% "spark-core" % "1.5.2",
  "org.apache.hbase" % "hbase-client" % "1.1.3",
  "org.apache.hbase" % "hbase-common" % "1.1.3",
  "org.apache.hbase" % "hbase-server" % "1.1.3"
)

resolvers+="OS China" at "http://maven.oschina.net/content/groups/public/"
發佈了203 篇原創文章 · 獲贊 42 · 訪問量 85萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章