HBase REST数据检索:扫描仪已耗尽

时间:2018-07-11 11:41:19

标签: python rest curl hbase

我对 HBase 的经验有限,我需要定期(每天)从给定表中检索数据,以便生成某种摘要。

问题在于,在我的初始测试中,我首先尝试使用 HBase shell在时间范围内获取一组行,如下所示:

$ echo "scan 'MyTable', {TIMERANGE => [1531132013466,1531133000000]}" | hbase shell | tee MyTable.dat

我在MyTable.dat文件中获得了该时间戳记间隔的行内容。这些数据恰好是添加到表中的最后一个数据。

关键是我想在Python中使用 HBase REST API 来做到这一点。如果我请求一个没有任何属性的 scanner PUT),但批大小为1000(<Scanner batch="1000"/>)除外,那么我会得到REST API提供的扫描器的位置,我可以重复执行GET请求,从表的开头获取一堆数据……(尽管扫描器在到达所需的行之前已经精疲力尽)。

但是,如果我做同样的事情,指定上面的时间范围(<Scanner batch="1000" startTime="1531132013466" endTime="1531133000000"/>),并且我从返回的位置(扫描仪)请求数据,则我必须等待很多时间(表中有很多行) ,这些是最后一个数据),但最后我得到一个 HTTP 204 错误代码,这意味着扫描仪已耗尽。

curl 执行相同操作可复制Python代码的行为,即

  • 在没有时间范围的情况下,我从表的开始获得了很多行,但是直到结束为止,还有
  • 指定了一个时间范围,我等待了很长时间,但最后没有检索到任何数据,扫描仪也用尽了

我在做什么错?感觉整个表都可以通过 HBase 外壳寻址,但是不能通过 REST API 调用来寻址...

0 个答案:

没有答案