【发布时间】:2012-08-11 13:52:27
【问题描述】:
在oracle/mysql我们通常查询记录使用
select * from test t where t.id in(1001,1002,1003);
但是hbase没有那个api来选择数据,只能 使用 scan(startRow) 和 endRow;
谁解决了这个问题,或者有办法做到这一点。 谢谢。
【问题讨论】:
标签: java database hadoop hbase
在oracle/mysql我们通常查询记录使用
select * from test t where t.id in(1001,1002,1003);
但是hbase没有那个api来选择数据,只能 使用 scan(startRow) 和 endRow;
谁解决了这个问题,或者有办法做到这一点。 谢谢。
【问题讨论】:
标签: java database hadoop hbase
如果您正在寻找 HBase 作为 RDBMS 的替代品,那么不要这样做。 HBase 在查询数据的方式上受到更多限制。
无论如何,如果您在 HBase 中的行键是 id,您可以通过键执行您提到的 3 个 GET 查询
【讨论】:
我完全同意 Arnon...HBase 并不是真正的 RDBMS 替代品。
要获得您正在寻找的某些查询功能,您应该考虑使用Hive,它是一种几乎是 SQL 的实现,可以在 Hadoop 或 HBase 中的数据上运行。
像您在问题中提到的那样使用 Java 与 HBase 进行交互时,您可以使用 filter,特别是 ValueFilter,来过滤掉值。这将使它只有与要返回的条件匹配的行。查看hbase reference guide on filters 以了解有关如何实现此功能的更多信息。
【讨论】: