【问题标题】:How to use Hbase's RowCounter class to get number of rows in a table?如何使用 Hbase 的 RowCounter 类获取表中的行数?
【发布时间】:2016-11-26 01:36:10
【问题描述】:

使用时

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

我如何指定一个 MapReduce 集群来计算我指定表中的行数(根据 hbase.apache 网站上的 this link)。

我在我的 cmd 行上运行了上述命令,它返回了行数。但是,返回计数需要 2 多小时,因为它是在 localhost 上运行的,而不是在 hadoop 集群上。我用了 10 分钟从 hbase shell 运行:

count 'tablename'

在有人问我为什么不能从 hbase shell 运行这个 cmd 之前,我有一个表需要 1 小时才能返回行数。我认为使用这个命令会更快,因为它会使用 mapreduce 作业来返回行数,而不是在 hbase shell 中运行,我不认为它使用 mapreduce。

【问题讨论】:

  • run $ hbase org.apache.hadoop.hbase.mapreduce.RowCounter &lt;tablename&gt; 也很慢?您无需指定 MapReduce 集群,我认为该作业在 hbase 区域服务器上运行。
  • @sel-fish,感谢您的帮助。我可能会关闭这个问题。我发现我的用户无权写入/使用集群,这就是它可能使用 localhost 的原因。一旦我找到一个可以访问集群的用户,上面的命令需要大约 15 秒才能运行,而 hbase shell 需要 10 分钟。

标签: java hadoop hbase


【解决方案1】:

我不会承认用户错误,但显然我用来运行命令的用户无权访问 Hadoop 集群,因此集群上没有创建 map/reduce 作业,因此创建了本地 MR 作业命令。它完成了,但需要 2 小时才能完成。

当我找到一个确实有权限的用户时,工作在 30 秒内完成,并且 DID 使用 MR 集群来分而治之。

发布此答案以防有人遇到与我相同的问题,但希望能节省他们的时间。

【讨论】:

    猜你喜欢
    • 2019-02-10
    • 2017-03-23
    • 1970-01-01
    • 2019-05-12
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多