首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于HBase的配置单元可实现深度分析查询

基于HBase的配置单元可实现深度分析查询
EN

Stack Overflow用户
提问于 2018-05-24 18:30:10
回答 3查看 459关注 0票数 1

我可以使用配置单元(使用Hive HBase Storage Handler)连接和访问现有的HBase表。

我认为界面并不是很强大。此接口是否可用于大型分析数据处理?

EN

回答 3

Stack Overflow用户

发布于 2018-05-25 00:09:23

不,不能。在HBase表中,任何WHERE子句都会以完全扫描的形式结束,并且扫描速度非常慢。请选择https://phoenix.apache.org/作为替代方案。

票数 2
EN

Stack Overflow用户

发布于 2018-05-25 00:20:46

Apache Phoenix更适用于查询HBase。你也可以使用Hive查询HBase,然后你的查询将在Map Reduce Job中转换,这将比Phoenix花费更多的时间。

PS :即使您使用的是Hbase,您也可以使用Hive进行大数据分析。

票数 1
EN

Stack Overflow用户

发布于 2020-04-19 21:36:35

要想更快地在HBase上执行分析查询,一个很好的解决方案是将HBaseHiveImpala相结合。

以下面的场景为例:

我有一个Kafka producer,它从一个json格式的套接字接收来自IoT设备的数千个信号。我在Spark流中与消费者一起处理这些信号,并将这些信号放入HBase表中。

HBase表和数据示例

代码语言:javascript
复制
$ hbase shell
hbase> create_namespace 'device_iot'
hbase> create 'device_iot:device', 'data'
hbase> put 'device_iot:device', '11c1310e-c0c2-461b-a4eb-f6bf8da2d23a-1509793235', 'data:deviceID', '11c1310e-c0c2-461b-a4eb-f6bf8da2d23c'
hbase> put 'device_iot:device', '11c1310e-c0c2-461b-a4eb-f6bf8da2d23a-1509793235', 'data:temperature', '12'
hbase> put 'device_iot:device', '11c1310e-c0c2-461b-a4eb-f6bf8da2d23a-1509793235', 'data:latitude', '52.14691120000001'
hbase> put 'device_iot:device', '11c1310e-c0c2-461b-a4eb-f6bf8da2d23a-1509793235', 'data:longitude', '11.658838699999933'
hbase> put 'device_iot:device', '11c1310e-c0c2-461b-a4eb-f6bf8da2d23a-1509793235', 'data:time', '2019-08-14T23:30:30000'

HBase表格顶部的Hive表格

代码语言:javascript
复制
CREATE EXTERNAL TABLE t_iot_devices (
id string, deviceID string, temperature int, latitude double, longitude double, time string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,data:deviceID,data:temperature,data:latitude,data:longitude,data:time") 
TBLPROPERTIES("hbase.table.name" = "device_iot:device");

Impala中查询

代码语言:javascript
复制
impala> invalidate metadata;
SELECT deviceID, max(temperature) AS maxTemperature 
FROM t_iot_devices 
GROUP BY deviceID;

+--------------------------------------+----------------+
| deviceid                             | maxtemperature |
+--------------------------------------+----------------+
| 11c1310e-c0c2-461b-a4eb-f6bf8da2d23b | 39             |
| 11c1310e-c0c2-461b-a4eb-f6bf8da2d23a | 39             |
| 11c1310e-c0c2-461b-a4eb-f6bf8da2d23c | 39             |
+--------------------------------------+----------------+

SELECT deviceID, substr(time,1,10) AS day, max(temperature) AS highest 
FROM t_iot_devices 
WHERE  substr(time,1,10) = '2019-07-07' 
GROUP BY deviceID, substr(time,1,10);

+--------------------------------------+------------+---------+
| deviceid                             | day        | highest |
+--------------------------------------+------------+---------+
| 11c1310e-c0c2-461b-a4eb-f6bf8da2d23c | 2019-07-07 | 34      |
| 11c1310e-c0c2-461b-a4eb-f6bf8da2d23b | 2019-07-07 | 35      |
| 11c1310e-c0c2-461b-a4eb-f6bf8da2d23a | 2019-07-07 | 22      |
+--------------------------------------+------------+---------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50507040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档