- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网易视频云是网易倾力打造的一款基于云计算的分布式多媒
体处理集群和专业音视频技术,提供稳定 畅、低时延、高并发的
视频直播、录制、存储、转码及点播等音视频的 PAAS 服务,在线
教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经
过简单的开发即可打造在线音视频平台。现在,网易视频云的技
术专家 大家分享一则技术文:一个 SparkSQL 的作业的一生。
Spark 是时下很火的计算框架,由 UC Berkeley AMP Lab 研发,
并由原班人马创建的 Databricks 负责商业化相关事务。而
SparkSQL 则是 Spark 之上搭建的 SQL 解决方案,主打交互查询场
景。
人人都说 Spark/SparkSQL 快,各种 Benchmark 满天飞,但是
到底 Spark/SparkSQL 快么,或者快在哪里,似乎很少有人说得
清。因为 Spark 是基于内存的计算框架?因为 SparkSQL 有强大的
优化器?本文将带你看一看一个 SparkSQL 作业到底是如何执行
的,顺便探讨一下 SparkSQL 和 Hive On MapReduce 比起来到底有
何其别。
SQL On Hadoop 的解决方案已经玲琅满 目了,不管是元祖级
的 Hive ,Cloudera 的 Impala ,MapR 的 Drill ,Presto ,SparkSQL 甚
至 Apache Tajo ,IBM BigSQL 等等,各家公司都试图解决 SQL 交
互场景的性能 问题,因为原本的 Hive On MapReduce 实在太慢了。
那么 Hive On MapReduce 和 SparkSQL 或者其他交互引擎相
比,慢在何处呢?让我们先看看一个 SQL On Hadoop 引擎到底如
何工作的。
现在的 SQL On Hadoop 作业,前半段的工作原理都差不多,类
似一个 Compiler ,分来分去都是这基层。
小红是数据分析,她某天写了个 SQL 来统计一个分院系的加
权均值分数汇总。
SELECT dept, avg(math_score * 1.2) + avg(eng_score * 0.8)
FROM studentsGROUP BY dept;
其中 STUDENTS 表是学生分数表(请不要在意这个表似乎不
符合范式,很多 Hadoop 上的数据都不符合范式,因为 Join 成本高,
而且我写表介绍也会很麻烦)。
她通过网易大数据的猛犸系统提交了这个查询到某个 SQL
On Hadoop 平台执行,然后她放下工作,切到视频网页看一会《琅
琊榜》。
在她看视频的时候,我们的 SQL 平台可是有很努力的工作滴。
首先是查询解析。
这里和很多 Compiler 类似,你需要一个 Parser (就是著名的程
序员约架专用项 目),Parser (确切说是 Lexer 加 Parser )的作用是把
一个字符串 变成一个一个 Token ,再根据语法定义生成一棵抽
象语法树 AST 。这里不详细展开,童鞋们可以参考编译原理。比较
多的项 目会选 ANTLR (Hive 啦,Presto 啦等等),你可以用类似
BNF 的范式来写 Parser 规则,当然也有手写的比如 SparkSQL。
AST 会进一步包装成一个简单的基本查询信息对象,这个对象包
含了一个查询基本的信息,比如基本语句的类型是 SELECT 还是
INSERT ,WHERE 是什么,GROUP BY 是什么,如果有子查询,还
需要递归进去,这个东西大致来说就是所谓的逻辑计划。
TableScan(students)
- Project(dept, avg(math_score * 1.2) + avg(eng_score * 0.8))
-TableSink
上面是无责任示意,具体到某个 SQL 引擎会略有不同,但是
基本上都会这么干。如果你想找一个代码干净易懂的 SQL 引擎,
可以参考 Presto (可以算我读过的开源代码写的最漂亮的了)。
到上面为止,你已经把字符串转换成一个所谓的 LogicalPlan ,
这个 Plan 距离可以求值来说还比较残疾。最基本来说,我还不知
道 dept 是个啥吧,math_score 是神马类型,AVG
您可能关注的文档
- 网上开店经验总结.pdf
- 网上开店试题答案.pdf
- 网上邻居设置.pdf
- 网上开店商业策划书.pdf
- 网上零售的营销策略探讨.pdf
- 网上零食商城(改).pdf
- 网上留言过程材料.pdf
- 网上论坛jsp课程设计.pdf
- 网上论文评审系统学生使用说明书.pdf
- 网上牛人总结.pdf
- 2026年消防设施操作员之消防设备基础知识考试题库500道带答案(新).docx
- 销售岗前培训课件.ppt
- 2026年消防设备操作员考试题库500道(典型题).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道附答案(实用).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道标准卷.docx
- 2026年材料员之材料员基础知识考试题库300道附完整答案(全优).docx
- 2026年材料员之材料员基础知识考试题库300道带答案(培优a卷).docx
- 2026年机械员考试题库含答案(轻巧夺冠).docx
- 2026年材料员之材料员基础知识考试题库300道【夺分金卷】.docx
- 2026年期货从业资格之期货法律法规考试题库500道(考点精练).docx
文档评论(0)