import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.{HBaseAdmin,HTable,Put,Get}
import org.apache.hadoop.hbase.util.Bytes
val conf = new HBaseConfiguration()
val admin = new HBaseAdmin(conf)
// list the tables
val listtables=admin.listTables()
listtables.foreach(println)
// let's insert some data in 'mytable' and get the row
val table = new HTable(conf, "mytable")
val theput= new Put(Bytes.toBytes("rowkey1"))
theput.add(Bytes.toBytes("ids"),Bytes.toBytes("id1"),Bytes.toBytes("one"))
table.put(theput)
val theget= new Get(Bytes.toBytes("rowkey1"))
val result=table.get(theget)
val value=result.value()
println(Bytes.toString(value))
2条答案
按热度按时间lokaqttq1#
虽然我已经完成了hbase的java客户端,但我研究并发现了以下内容。。java方式代码段:
可以使用keyonlyfilter()仅获取行的键。然后像下面这样循环。。
像上面一样,您可以使用下面的scala hbase示例。。
请看javaapi。适应scala应该相对容易。下面的示例显示了部分适用于scala的示例java代码:
但是,作为一个附加信息(以及比java或scala更好的方法),请参见下面的内容
RowCounter
是一个mapreduce作业,用于统计表中的所有行。这是一个很好的实用工具,可以用作健全性检查,以确保HBase
如果存在元数据不一致的问题,可以读取表的所有块。它将在一个进程中运行mapreduce,但是如果您有一个mapreduce集群供它利用,它将运行得更快。mfuanj7w2#
使用java客户机,可以使用rowkeyonlyfilter扫描所有表。通过这种方式,您只将行键传输到您的客户机代码,而不是数据,因此速度会更快。这也是count'tablename'在shell中的作用。