gpt4 book ai didi

scala - 如何使用 Scala 计算 Hbase 表上的所有行

转载 作者:可可西里 更新时间:2023-11-01 14:52:31 26 4
gpt4 key购买 nike

我们可以计算所有行,使用 hbase shell 和这个命令:count 'table_name', INTERVAL=> 1 或者只是简单的 count 'table_name

但是如何使用 Scala 编程 做到这一点?

最佳答案

虽然我已经完成了 Hbase 的 Java 客户端,但我研究并发现了以下内容..Java 方式代码片段:

您可以使用 KeyOnlyFilter () 只获取行的键。然后像下面这样循环..

   for (Result rs = scanner.next(); rs != null; rs = scanner.next()) {
number++;
}

像上面一样,您可以使用下面的 scala hbase 示例..

Please look at the Java API. Adaptation to scala should be relatively easy. The example below shows part of the sample Java code adapted to scala:

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))

However as an additional information(and best way than java or scala) please see below

RowCounter 是一个 mapreduce 作业,用于计算表格的所有行。这是一个很好的实用程序,可用作健全性检查,以确保 HBase 在担心元数据不一致时可以读取表的所有 block 。它将在单个进程中运行所有 mapreduce,但如果您有一个 MapReduce 集群供其利用,它将运行得更快。

$ hbase org.apache.hadoop.hbase.mapreduce.RowCounter <tablename>

Usage: RowCounter [options]
<tablename> [
--starttime=[start]
--endtime=[end]
[--range=[startKey],[endKey]]
[<column1> <column2>...]
]

关于scala - 如何使用 Scala 计算 Hbase 表上的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38523880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com