我正在使用 Hive 查询从 JSP 访问 HBase 数据。现在,由于 Hbase 可以存储像 TB 级数据这样的海量数据。如果数据量很大,hive 查询(转换为 map reduce 任务)将需要几分钟的时间。所以会JSP 页面等待说 10 分钟显示数据。应该是什么策略。这是正确的方法吗?如果不是这样,在 JSP 上显示大量 hbase 数据的最佳方法是什么。
1 回答
Hive/任何 hadoop map-reduce 系统都是为离线批处理而设计的。从 JSP 提交 Hive 查询并等待任意时间以使数据准备好并显示在前端是绝对禁止的。如果集群超忙,您的作业甚至可能无法在指定时间内安排。
你到底想从前端的 Hbase 显示什么?
如果它是表中的一组行并且您知道这些行是什么(意味着您有行键或者您的应用程序可以在运行时计算它),只需从中获取这些行并显示。
如果您必须执行一些类似 SQL 的操作(连接/选择等),那么我想您确实意识到,HBase 是一个 No-SQL 系统,您应该在应用程序中执行这些操作,然后使用行键。
例如:如果您有 2 个 HBase 表,请说 Dept (dept Id 作为行键和一个字符串 column(employees),其中包含逗号分隔的 empIds 列表) 和 Employee(emp Id 作为行键和列 Name、Age、Salary)。要找到部门中薪水最高的员工,您必须
a.从 Dept 表中获取行(使用部门 ID)
湾。迭代employees 列中的empId 列表。
C。在每次迭代中,从 Employee 表中获取行(通过 empId 行键)
并找到最大值
是的,HBase 可以处理 TB 的数据,但您几乎不必使用 JSP 在前端显示那么多数据。我猜,你很可能只对数据的一部分感兴趣,尽管支持 HBase 表要大得多