HBase作为Nosql的常用系统之一,在很多大数据应用/平台中广泛使用。例如通过Spark统计后将结果存放到HBase中。通常统计结果还需要进一步和元数据或者字典表关联从而得到最终结果显示,这意味着可能需要将HBase数据跟RDBMS关联查询。
有两种方案:
- 通过后台服务分别调用HBase和数据库的数据,通过程序做关联;
- 或者通过现成的查询引擎用SQL对HBase和数据库数据做Join。
后一方案使用SQL查询更为通用。SQL-on-HADOOP有很多选择,例如Presto,Phoenix,Drill。目前看下来Presto不支持HBase,Phoenix只支持HBase,只有Drill可作为备选方案。
Drill连接HBase的issue
http://blog.sina.com.cn/s/blog_76923bd80102wp99.html
下载HBASE Shaded Client 替换即可,下载地址: http://mvnrepository.com/artifact/org.apache.hbase/hbase-shaded-client/1.2.3
hbase-annotations-1.1.3.jar
hbase-client-1.1.3.jar
hbase-common-1.1.3.jar
hbase-protocol-1.1.3.jar
替换成
hbase-shaded-client-1.2.3.jar
HBase表
hbase(main):001:0> scan 'test'
ROW COLUMN+CELL
x00001|2018-09-18 12|platform|android column=f:value, timestamp=1538038106882, value=12
x00001|2018-09-18 13|platform|android column=f:value, timestamp=1538038118094, value=22
x00001|2018-09-18 14|platform|android column=f:value, timestamp=1538038123616, value=22
x00001|2018-09-18 15|platform|android column=f:value, timestamp=1538038134952, value=6
x00001|2018-09-18 16|platform|android column=f:value, timestamp=1538038143047, value=10
x00001|2018-09-18 17|platform|android column=f:value, timestamp=1538038153844, value=30
6 row(s) in 0.0390 seconds
postgres
下载postgres驱动postgresql-9.4.1212.jre7.jar到jars/3rdparty/
创建新的storage:
{
"type": "jdbc",
"driver": "org.postgresql.Driver",
"url": "jdbc:postgresql://localhost/postgres",
"username": "postgres",
"password": "111111",
"enabled": true
}
创建测试表:
select * from platform
name |description |
--------|---------------|
android |google android |
Drill join
0: jdbc:drill:zk=local> select SPLIT(CONVERT_FROM(t.row_key, 'UTF8'), '|')[0] AS appk,
. . . . . . . . . . . > SPLIT(CONVERT_FROM(t.row_key, 'UTF8'), '|')[1] AS `hour`,
. . . . . . . . . . . > SPLIT(CONVERT_FROM(t.row_key, 'UTF8'), '|')[3] AS platform,
. . . . . . . . . . . > p.`description`,
. . . . . . . . . . . > cast(t.f.`value` as INT) as x FROM hbase.test t
. . . . . . . . . . . > inner join pg.test.platform p
. . . . . . . . . . . > on SPLIT(CONVERT_FROM(t.row_key, 'UTF8'), '|')[3] = p.`name`;
+---------+----------------+-----------+-----------------+-----+
| appk | hour | platform | description | x |
+---------+----------------+-----------+-----------------+-----+
| x00001 | 2018-09-18 12 | android | google android | 12 |
| x00001 | 2018-09-18 17 | android | google android | 30 |
| x00001 | 2018-09-18 16 | android | google android | 10 |
| x00001 | 2018-09-18 15 | android | google android | 6 |
| x00001 | 2018-09-18 14 | android | google android | 22 |
| x00001 | 2018-09-18 13 | android | google android | 22 |
+---------+----------------+-----------+-----------------+-----+
性能测试(todo)
Apache Drill - join HBase and RDBMs的更多相关文章
-
Apache Drill 调研学习
Apache Drill 调研学习 ## 一.Drill概述 在大数据时代,对于Hadoop中的信息,越来越多的用户需要能够获得快速且互动的分析方法.大数据面临的一个很大的问题是大多数分析查询都很缓慢 ...
-
apache开源项目--Apache Drill
为了帮助企业用户寻找更为有效.加快Hadoop数据查询的方法,Apache 软件基金会发起了一项名为“Drill”的开源项目.Apache Drill 实现了 Google's Dremel. Apa ...
-
ERROR: Java 1.7 or later is required to run Apache Drill.
问题 Apache 的 drill 执行启动命令 drill-embedded 报错: ERROR: Java 1.7 or later is required to run Apache Drill ...
-
【原创】大叔问题定位分享(16)spark写数据到hive外部表报错ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat
spark 2.1.1 spark在写数据到hive外部表(底层数据在hbase中)时会报错 Caused by: java.lang.ClassCastException: org.apache.h ...
-
[saiku] 使用 Apache Phoenix and HBase 结合 saiku 做大数据查询分析
saiku不仅可以对传统的RDBMS里面的数据做OLAP分析,还可以对Nosql数据库如Hbase做统计分析. 本文简单介绍下一个使用saiku去查询分析hbase数据的例子. 1.phoenix和h ...
-
Apache Drill Install and Test
Drill doc, https://drill.apache.org/docs/hive-storage-plugin/ 发现在国内访问的时候有些标签反应还是很慢,因为它访问了gooleapi的缘故 ...
-
Hbase与RDBMS
hbase与传统关系数据库区别 hbase适合于非结构化数据存储的数据库.介于Map Entry 和 DB row之间的一种数据存储方式. 1. 数据类型: HBase只有简单的字符串类型,它只保存字 ...
-
apache开源项目--HBase
HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. HBase是Goog ...
-
HBase与RDBMS的区别
此讨论并不局限于HBase,也会延伸到MongoDB和Cassandra这样的NoSQL数据库. 1.RDBMS RDBMS有以下特点: 面向视图:RDBMS表使用固定的视图,表中的数据类型也会事先定 ...
随机推荐
-
Oracle分区索引
索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局分区索引) 下面就来详细解 ...
-
jQuery 插件为什么要return this.each()
jQuery.fn.test2= function(){ this.css("background","#ff0");//这里面的this为jquery对象,而 ...
-
nginx配置实战1----配置虚拟主机
1 nginx虚拟主机的概念 虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点.应用组件等,提供必要的站点功能.数据存放和传输功能,所谓虚拟主机,也叫"网站空间",就是把 ...
-
[OFBiz]开发 一
1.使用Eclipse3.7.1 + subclipse plugins 1.8.2(svn client)http://subclipse.tigris.org/servlets/ProjectDo ...
-
apache2.4.4启用deflate压缩
今天在看<高性能php应用开发>这本书,说道如何启用mod_deflate: 启用如下模块: LoadModule deflate_module modules/mod_deflate.s ...
-
Spring Boot配置文件详解-ConfigurationProperties和Value优缺点-(转)好文
文章转自 http://www.cnblogs.com/itdragon/p/8686554.html Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们 ...
-
A1098. Insertion or Heap Sort
According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...
-
Java Web(五) 监听器Listener
监听器概述 在上一篇里介绍了过滤器Filter,而Listener是Servlet的另一个高级特性.Listener用于监听Java Web程序中的事件,例如创建,修改,删除Session,reque ...
-
BugFree使用技巧 转载
转载 2013年05月27日 17:53:45 BugFree使用技巧 我们将会从使用Ldap域账号.使用标记.发送邮件通知.更改上传附件的大小和使用快捷键来进行讲解. 使用Ldap域帐号 如果希望使 ...
-
语义SLAM的数据关联和语义定位(二)Semantic Localization Via the Matrix Permanent
论文假设和单目标模型 这部分想讲一下Semantic Localization Via the Matrix Permanent这篇文章的一些假设. 待求解的问题可以描述为 假设从姿态\(x\)看到的 ...