繁体   English   中英

HBase中的部分行键扫描

[英]Partial Row key scan in HBase

我必须在hbase部署中遵循以下行键:

EquipmentNumber | LOGTIME

例如:454312 | 20180304124511

现在我要进行部分行键扫描,即我只想在LogTime范围内扫描

例如,我想获取日志时间t1和t2之间的所有设备号?

任何机构都可以帮忙。

HBase行按字母顺序排序,因此您可以按前缀进行扫描,但是不能按后缀进行扫描。

您可以做的一件事是使用RowFilter扫描整个表-根据字段LogTime编写过滤器逻辑。 它将过滤服务器上的行,因此您的客户端代码将仅获取正确的行。

对于过滤器,除非您知道设备ID的大概范围可能落在给定的持续时间内(这并非总是可能的),否则全扫描似乎是不可避免的。

实现此目的的另一种方法是使用中间查找/索引表,该表将行键的第二部分映射到实际数据表中的第一部分或复合行键。 这将保持您的主要访问模式按设备ID原样查找记录,当您想通过第二个键查找时,请使用查找表在数据表中查找行键,然后使用这些键来获取所需的数据。 但是,这种方法将使您的应用程序有责任保持查询表同步以更新/删除数据表。

对于索引的自动管理,您可以尝试使用Phoenix,您可以在logTime上创建具有全局索引的Phoenix表,以下是一些快速示例-

CREATE TABLE "SO50228751"(
"equipNum" integer not null,
"logtime" bigint not null,
"f"."data" varchar
CONSTRAINT pk PRIMARY KEY ("equipNum", "logtime")); 

新增资料

upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454312,20180304124511,'a');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454312,20180304124512,'b');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454312,20180304124513,'c');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454312,20180304124514,'d');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454312,20180304124515,'e');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454313,20180304124521,'f');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454313,20180304124522,'g');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454313,20180304124523,'h');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454313,20180304124524,'i');
upsert into "SO50228751"("equipNum", "logtime","f"."data")  values(454312,20180304124524,'ii');

创建索引

CREATE INDEX so_idx ON "SO50228751"(logtime);

使用索引按logTime查询

select /*+ /*+ INDEX("SO50228751" so_idx) */ * from "SO50228751" where "logtime" between 20180304124511 and 20180304124516;

在决定选择Phoenix索引之前,请检查文档和此链接-> https://community.hortonworks.com/articles/61705/art-of-phoenix-secondary-indexes.html,以了解它们在您中的适应程度如何用例。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM