#研发解决方案#数据开放实验室:再战即席查询和数据开放

创建于2017/9/7 最后更新于2017/9/16

关键词:大数据,HBase,数据开放,即席查询,数据授权,HDFS,Zeppelin,Kylin,

提纲:

  1. 解决什么场景

  2. 即席查询的发展历程

  3. 五个特性

  4. 小结


  数据开放实验室(OpenDataLab) 是云纵数据中心继魔镜(竞情数据分布式抓取管理平台)、魔盒(大数据协作平台)、数屏(可视化监控屏管理平台)之后推出的又一款大数据应用。

  它的现阶段目标是将我司的各种数据,经过脱敏、清洗等处理之后,授权下游企业使用,通过即席查询确定数据格式,定义API,通过API拉取数据。它的用户既有企业内部用户,也有企业外部用户。

  它的开发者有:前台少明,川川,中舟,顺闯,仓库清勇,兴申,明军,明黎,梁键等。

 

  蚂蚁金服曾把大数据应用划分为四个阶段,如下图所示:

图1 四个应用阶段

 

  虽然我们的数据开放实验室对标的是处于第四阶段的蚂蚁数巢之云数据实验室,但是第一我们现阶段数据量还是太小,第二蚂蚁金服强调的是“可用不可见,相逢不相识”的可信的大数据加工处理环境,而我们强调的是将大数据以自助定制API的方式输出给可信的合作伙伴,本质上还是即席查询的变种。 

 

0x00,解决什么场景

   我们定义数据开放实验室要解决三件事:

1)把数据仓库的数据复制到实验室数据专区。把数据专区里的数据授权给企业,在这个数据复制的过程中,可以对数据做脱敏等清洗工作;

2)企业可以看到企业专区里的表结构和数据字典,可以做即席查询(Ad-hoc),当然只展示结果集的前1000条记录;

3)企业如果觉得结果集符合需求,可以将查询发布为 API,通过接口调用,可以将数据拉到企业本地。

  

0x01,即席查询的发展历程

面向数据仓库的即席查询,这个工作在窝窝开展过,技术选型为 shib+node.js+Presto。Presto 也是几年前诸多互联网公司提升 Ad-hoc 响应速度的重要选择之一。

到了2016、2017年,即席查询有了更多的选择,如 Apache Zeppelin,Apache Kylin,原先用了 Presto 的那拨公司陆续接入了 Kylin,如美团点评唯品会链家京东POP,国美商城,百度地图

2017年3月3日,明军做了 Kylin 技术演示。我们发现一个严重的问题,由于给企业授权数据是分批分期进行的,如果 Kylin 建了多个 Cube,不同 Cube 之间的表不能联表查询,那就违背了数据开放实验室的需求,你想企业客户都已经看到了多张表,不可能说因为底层 Cube 的限制而不允许联表查询。唯品会2016年12月做的 Kylin 分享中提到,他们基于 Presto+Kylin 双引擎的架构做了改造,支持了跨 Cube Join。我们短期内还做不到这一点。

 

2017年7月14日数据开放实验室第一次公开演示。

2017年8月18日数据开放实验室正式上线。

 

0x02,五大特性

接下来展示一下这个产品企业前台的五个特性。

第一,企业前台的 dashboard 展示集群资源使用情况,已授权数据表数量,已发布API数量,如下图所示:

图3 首页dashboard

 

当 Hadoop 集群的CPU、内存使用情况变为红色时,不建议进行数据查询操作。

第二,数据列表可以查看数据字典,数据大小。

第三,查询编辑器里支持按 tab 键提示关键字、表名、字段名,还支持一键格式化。

图6 智能提示和格式化

 

咱们这里的 SQL 采用的是类似于 SQL 的语法,可以看作是标准 SQL 的子集,但不能因此简单地把 OpenDataLab 等价成⼀个数据库,它在一些查询语法上跟标准 SQL 有所不同,需要看帮助文档。

还可以把当前 SQL 语句保存下来,以后能在“查询记录”列表里找回来。

查询的执行过程会实时打印出来,如下图所示:

图7 执行信息

 

第四,查询之后,可以发布为 API 了,临时或一次性使用数据,可以选择“单次”,周期性获取数据,选择“周期”。

第五,API 发布后,可以在 API 列表里找到,能看到 API 任务进度和数据定制进度。加速状态为“已加速”的分析才能被外部程序访问到。

既可以由程序调用 API,同时为了方便内部用户导出数据,这里也提供了下载报表的按钮。

数据开放实验室还有一个管理后台,能开通企业,对企业授权数据,定义数据脱敏和转换等规则,这里不再赘述。

  

0x03,小结

就酱,底层有 DataFlash 集群,上层应用有魔盒、魔镜、数屏、数据开放实验室等大数据应用或工具。

 

-EOF-


赠图一枚

 

吐槽若干:


 RT @hengdm:一件看似简单的事之所以一直没人能做好,是因为它有看不见的大坑。

/*说一个实例。

昨天看到一篇《微信iOS收款到账语音提醒开发总结》。需求很简单,为了解决小商户老板们在频繁交易中不方便核对、确认到账的痛点,微信要做收款到账语音提醒。

技术实现嘛,听上去也不难,收款到账语音提醒需要收款方在收到款后,播放一段TTS合成语音播报金额,微信在前台时可以通过模板消息将需要播报的金额带下来,再请求TTS数据并播放,但是app在挂起或者被kill掉的情况下要如何请求语音数据并播放呢?

但遇到的问题有:

零,有人说,使用 VoIP 方式唤醒 App,苹果审核团队会拒审的。

微信开发者说,还好,苹果官方文档确实提到了只有 VoIP 应用才能接入 Push Kit,微信本身支持视频通话和语音通话的功能,所以收款语音提醒只是复用这个通道。

一,有大佬吐槽,如果微信支付开启了到帐提醒,即使手机静音了,也会播报。

好,改。

但是,苹果在iOS5之后便禁止监听静音按键。

悲催的开发者最后在 Reddit 上找到了一种曲线救国的方式,实现起来也不复杂:使用AudioServicesPlaySystemSound播放一段0.2s的空白音频,并监听音频播放完成事件,如果从开始播放到回调完成方法的间隔时间小于0.1s,则意味当前静音开关为开启状态。

二,用户吐槽音量太小听不见。

原因是用户设置的系统音量过小所导致。

那也得解决啊。

最终的解决方案借鉴了进入收付款展示二维码时自动调节屏幕亮度的方案:如果屏幕亮度未达到阈值,则调高屏幕亮度到阈值,离开页面时,将亮度设回原亮度。同理,播放提示音时,若用户设置的系统音量小于阈值,则调节到阈值。提示音播放完毕后,将提示音调回原音量。

*/


昨天面试的时候我告诉候选人,一个公司如果让一帮人只做业务另一帮人只做架构(其实也只是技术选型而已),这样是不对的。

第一,每个工程师都有更高更快更强的愿望,我们讲究的是平凡人(可以)做非凡事。

第二,只做技术选型远远不够。技术管理分为三个层次:研发能力,研发效率,研发活力。“研发能力的提升”是研发部门的生理需求,“生产效率的提升”是公司的安全需求,“研发活力的提升”是研发人员的社交需求和尊重需求。三者循环往复,互相促进,缺一不可。


RT @cxiaoji:「1996年6月,阿里亚娜五号火箭第一次试射,表示水平速度的64位浮点数值被转换为16位整型代入运算,导致火箭在高速下水平翻滚解体。

他们要是用JavaScript就没事了

/*注:Ariane的开发语言是Ada。设计Ariane4火箭时坚信水平速率是不会超过一个16-bit signed integer的。但Ariane5火箭的水平速率比4高出了5倍,code review时没有注意到这一点,导致数据转换时溢出,控制惯性导航系统的计算机向控制引擎喷嘴的计算机发送了一个无效数据,于是火箭偏离它的飞行路径,解体并爆炸。*/

 

-END-

posted @ 2017-09-29 09:44  旁观者  阅读(1507)  评论(0编辑  收藏  举报