如何在一个简单的 REST客户端使用 SQL,Hadoop,Drill?
更新时间:2023-04-29 00:25:01 阅读量: 实用文档 文档下载
如何在一个简单的 REST客户端使用 SQL,Hadoop,Drill
?
根据福雷斯特研究公司(Forrester Research)的观点,SQL将成为Hadoop生态系统中最多
产的应用方案之一。Apache Drill 是一个应用于大数据搜索的开源SQL查询引擎。REST服务和客户端已经成为互联网流行的技术。 Apache HBase则是一个广受欢迎的Hadoop NoSQL数据库。
在本文中,我将结合 SQL、Hadoop、Drill、REST with JSON、NoSQL 及 HBase 等技术,讨论并展示如何使用 Drill REST API来查询 HBase 和 Hive。同时我也会分享一个使用Drill REST API 的简单jQuery客户端,利用JSON做数据交换,提供给用户一个基本的操作界面。
Apache Drill教程和MapR沙箱
Apache Drill提供了直接查询文件中自描述和半结构化数据(类似与JSON和Parquet)以
及HBase表的功能,并且查询HBase表时无需在类似Hive元存储的集中式存储中定义和维护表的
模式。欲了解更多和下载Drill,请访问e54a5955a517866fb84ae45c3b3567ec102ddcd6/。这个例子是建立在使用Drill的MapR
沙箱和Drill教程中示例数据基础上的。含有Apache Drill的MapR沙箱是一个功能全面,单节点的
集群,它可以让你在一个Hadoop环境中了解Apache Drill的概况。欲了解更多关于在MapR沙箱中使用Drill的教程,请访问
https://e54a5955a517866fb84ae45c3b3567ec102ddcd6/confluence/display/DRILL/Apache+Drill+Tutorial。(译者注:原文链接
不可用,请访问e54a5955a517866fb84ae45c3b3567ec102ddcd6/docs/learn-drill-with-the-mapr-sandbox)
浏览用例数据
Drill教程中的案例是一个在线零售系统,用户可以通过Web的界面和手机应用来购买商品。
主要的客户概要信息和产品目录在MapR-DB中管理,这是一个NoSQL的HBase数据库。来自网
页端和手机应用端的点击流数据以JSON格式文件的形式存储在Hadoop中,订单数据则是存储
在Hive中。通过Drill,我们可以动态查询这些不同数据源,而且甚至可以结合不同的数据源查询。
下面的关系图展示了该教程中不同数据源之间的“关系”。
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd61
浏览日志数据
利用Drill,你可以对文件和目录直接执行SQL操作,而无需做预先模式定义或者任何模型更
改的模式管理动作。查询的同时也能得到相应的模式。下图是使用Drill Explorer来浏览JSON数据,无需定义和管理任何集中的模式。
下面的例子是对一个JSON文件执行SQL语句,查询事务id、设备名称和以cr开头的关键字。
浏览Hive上订单表(Orders)数据
下面的例子是使用Drill Explorer来浏览Hive的order表。Drill可以在不用Hive执行引擎的条件
下使用Hive元存储。
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd62
浏览HBase的产品表(Products)
HBase是一个NoSQL数据库。MapR-DB是一个企业级的Hadoop NoSQL数据库,它实现
了HBase的API,并将其开放以支持应用开发。MapR-DB的使用起来就和HBase一样,但底层实现更为高效,而且它与MapR文件系统是集成的。HBase是一个面向列族的数据库,且是“无
模式”的,这意味着当你创建一个表的时候只需要定义列族。在你写数据的时候,列会被动态定义,并且数据都以字节数组的形式存储,而非输入时的类型。
HBase的产品表(products)有两个列族(下图中的details和pricing):
如果查询HBase采用Hive或其他基于Hadoop的SQL(SQL-on-Hadoop)方式,你不得不包
装一个模式定义以此明确如何转换二进制的值。不像其他基于Hadoop的SQL方式,Drill在Hive中不需要包装模式定义来操作HBase数据。你可以像如下使用Drill explorer来浏览HBase中产
品(products)表。
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd63
这是一个使用Drill命令行界面来查询HBase中产品(products)表的示例。
鉴于HBase中任何数据都是以字节数组存储的,以及Drill不需要预先的模式定义来指明数据
类型,查询所返回列值的原始字节数组与其存储状态时一致。通过Drill,你可以使用convert_from
函数将数据转换到相应的数据类型。另外,列可以像这样指定别名:
为了避免反复写入冗长且复杂的HBase查询语句,通用的工作流程是先创建一个包含有用信
息的视图,然后再查询该视图。在ODBC工具,JDBC客户端或本例中的REST客户端中,视图可以使数据以更可用的”表格”形式来便于使用。REST客户端所用的视图是如上所示经过转换与Hive 表连接的HBase数据。这是一个基于HBase数据创建视图的查询:
首先切换到可写的工作区:
创建一个HBase中产品表(Products)的视图:
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd64
与传统数据库所不同,视图通常都是由DBA/开发人员来操作,Drill中基于文件系统的视图是
非常轻量的。一个Drill视图事实上是在一个简单的JSON 文件中定义的虚拟数据集。来看看创建
的JSON文件:
你可以像下面一样使用Drill explorer来浏览产品视图表(prodview):
在查询中关联Hive的订单表(Orders)和产品视图表(Prodview)
通过Drill,我们可以在查询中动态地关联Hive、文件和HBase表。举个例子,该查询是从json
日志文件中获取device和prod_id,从Hive的订单表中获取order,其中json日志文件的prod_id等
于order表中的prod_id。【译者注:原文作者笔误,将查询条件的prod_id写成了cust_id。】
创建一个视图orderprodview,连接HBase的产品表视图(prodview)
【译者注:此处原文作者有误,写的是产品表product】和Hive的订单表(Order):
这是查询视图orderprodview的例子:
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd65
Drill视图的用途如下:
简化复杂查询从多种数据源中聚合数据与表一样配有像Tableau一样的BI(Business Intelligence)工具数据管理灵活接下来,让我们看看在REST中如何使用这个视图Drill REST接口
Drill提供了一个简单的REST接口,你可以从Drill wiki上了解到更
多https://e54a5955a517866fb84ae45c3b3567ec102ddcd6/confluence/display/DRILL/Apache+Drill+Wiki。这是提交一个查询并收到结果的REST API。你可以通过HTTP POST请求到Drill URL,
即
使用CURL或者浏览器插件来测试REST接口非常方便。下面这个例子就是从Linux命令行
用CURL来发送对orderprodview的查询:
这是使用Google Chrome的一个REST Client扩展来查询orderprodview:
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd66
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd67
使用Drill REST接口查询订单产品视图的JQuery客户端
现在我们来看看为刚刚的REST查询而做的一个简单JQuery客户端。这是客户端的一个截图
。它发起查询给Drill并且在一个表格中展示出了结果。
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd68
使用Google Chrome开发者工具,你可以看到HTTP请求如下所示:
而返回的response如下:
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd69
一个jQuery客户端
这是参与服务调用的jQuery代码。jQuery客户端使用jquery.ajax来执行HTTP POST到Drill查询URL,将查询数据以JSON的格式传递过去。
如果请求成功,renderList会被调用,该方法如下所示。返回的response数据是一个JSON对象数据,renderList会把订单对象添加到index页面的html表格中。
jQuery客户端还提供了搜索产品类目(Product Category)的功能,如下图。
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd610
搜索功能的代码只是在查询中添加了where category like ‘searchKey’:
在Chrome开发者工具窗口看到的JSON请求数据是这样的:
以上的例子包含了一个简单的REST客户端,它采用Drill REST API来动态查询HBase和Hive 。
想要了解更多如何使用Drill的示例,下载MapR沙箱,然后尝试一下Drill沙箱教程。更多信息可到Apache Drill官方网站获取。
打赏支持我翻译更多好文章,谢谢!
任选一种支付方式
? ′?¤ ?2????? ?? ¥è??é ?e54a5955a517866fb84ae45c3b3567ec102ddcd611
正在阅读:
如何在一个简单的 REST客户端使用 SQL,Hadoop,Drill?04-29
工商公示系统企业信息表06-02
在县委书记工作讲坛上的讲话08-27
月度市场推广计划表03-29
装设设计施工图设计说明规范05-16
绝缘等级01-23
学校党支部书记述职述廉报告3篇02-25
小学数学六年级下册圆柱的表面积说课稿范文精选三篇-圆柱表面积04-20
2013国家公务员考试行测暑期向前冲 数学运算:排列组合与概率问题重难点讲解07-24
中建一局劳务分包合同范本08-26
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 何在
- 客户端
- 简单
- 使用
- Hadoop
- 一个
- Drill
- REST
- SQL
- 学前教育资助自查报告
- 【最新修订版】基于单片机的智能交通灯控制系统的设计毕业论文设计说明书
- 高中物理课时达标训练(选修3-1):第三章磁场第5课时运动电荷在磁场中受到的力 (3)
- 高三英语专项练习(完形填空学案含答案),推荐文档
- 揭开中国运十大飞机下马背后的真相
- 全国青少年机器人等级考试二级实操作品图及知识点
- 妇女节的作文:献给三八妇女节-最受女性欢迎的故事650字.
- 航空发动机原理复习题
- 电能管理系统优化简介
- 棉花加工厂消防安全管理暂行规定示范文本
- 我们的节日春节作文1000字
- 2021年高一上学期第一次月考文科综合试题(缺地理答案) 含答案
- WIN7网络共享中心 里面还有个更改适配器设置 选
- 2017年华中师范大学新闻传播学院440新闻与传播专业基础之传播学教程考研冲刺密押题
- 船舶涂装工程承包合同
- 国家公务员制度课程教学大纲
- 东江学府五期施工组织设计(报建用)
- 2014年最新ISO质量管理体系内审员题库
- (医药卫生)突发公共卫生事件与传染病疫情监测信息报告管理办法
- 奥数知识点整理精选--小学2016