Hbase REST API:时间范围扫描
Hbase REST API: Timerange scan
Q: 如何使用 REST API 在给定的时间范围内扫描 Hbase?
我试过这段代码:
<Scanner batch="1048576">
<filter>
{
"type": "PrefixFilter",
"value": "NThiMDNjYWRlNTc5NmIwOWI0OGViMTdl", // base64 encoded "58b03cade5796b09b48eb17e"
"timerange": ["1489502797781", "1489502797788"]
}
</filter>
</Scanner>
Hbase shell 时间范围扫描是:
> scan 'tableName', { TIMERANGE => [1489442551458, 1489442551558] }
将时间戳编码为 base64 无效,将数组字符串化并将其编码为 base64 无效,传递整数(时间戳)而不是字符串无效。没有错误,我得到的只是我拥有的所有记录,这些记录通过了我提供的其他条件,即“58b03cade5796b09b48eb17e”前缀,就像它被完全忽略了,所以我想这不是正确的方法。
对于我在 REST 调用的 XSD 中看到的内容,时间参数是扫描器的参数,而不是过滤器的参数。此外,查看 XSD,这两个属性似乎在 startTime
和 endTime
(均为整数)中分开。所以,你可以尝试这样的事情:
<Scanner batch="1048576" startTime=1489502797781, endTime=1489502797788>
<filter>
{
"type": "PrefixFilter",
"value": "NThiMDNjYWRlNTc5NmIwOWI0OGViMTdl", // base64 encoded "58b03cade5796b09b48eb17e"
}
</filter>
</Scanner>
Q: 如何使用 REST API 在给定的时间范围内扫描 Hbase?
我试过这段代码:
<Scanner batch="1048576">
<filter>
{
"type": "PrefixFilter",
"value": "NThiMDNjYWRlNTc5NmIwOWI0OGViMTdl", // base64 encoded "58b03cade5796b09b48eb17e"
"timerange": ["1489502797781", "1489502797788"]
}
</filter>
</Scanner>
Hbase shell 时间范围扫描是:
> scan 'tableName', { TIMERANGE => [1489442551458, 1489442551558] }
将时间戳编码为 base64 无效,将数组字符串化并将其编码为 base64 无效,传递整数(时间戳)而不是字符串无效。没有错误,我得到的只是我拥有的所有记录,这些记录通过了我提供的其他条件,即“58b03cade5796b09b48eb17e”前缀,就像它被完全忽略了,所以我想这不是正确的方法。
对于我在 REST 调用的 XSD 中看到的内容,时间参数是扫描器的参数,而不是过滤器的参数。此外,查看 XSD,这两个属性似乎在 startTime
和 endTime
(均为整数)中分开。所以,你可以尝试这样的事情:
<Scanner batch="1048576" startTime=1489502797781, endTime=1489502797788>
<filter>
{
"type": "PrefixFilter",
"value": "NThiMDNjYWRlNTc5NmIwOWI0OGViMTdl", // base64 encoded "58b03cade5796b09b48eb17e"
}
</filter>
</Scanner>