6 Spark SQL
简答题
T1 请阐述 Hive 中 SQL 查询转化为 MapReduce 作业的具体过程。❌
答:HiveSQL 命令或查询首先进入到驱动模块,由驱动模块中的编译器进行解析编译,并由优化器对该操作进行优化计算,然后交给执行器去执行,执行器通常的任务是启动一个或多个 MapReduce 任务,详细过程如下:
① 将SQL转换成抽象语法树;
② 将抽象语法树转换成查询块;
③ 将查询块转换成逻辑查询计划;
④ 重写逻辑查询计划;
⑤ 将逻辑计划转成物理计划;
⑥ 选择最佳的优化查询策略。
T2 请阐述 Shark 和 Hive 的关系以及 Shark 有什么缺陷。
答:
① Shark 和 Hive 的关系:Hive 把 SQL 语句转化成 MapReduce 任务执行,而 Shark 的在继承了大量的 Hive 代码实现与 Hive 兼容的同时,把 SQL 语句转换成 Spark 作业执行。
② Shark缺陷:
(1)逻辑执行计划的优化完全依赖于 Hive,不方便添加新的优化策略;
(2)Spark 是线程级并行,而 MapReduce 是进程级并行;因此,Spark 在兼容 Hive 的实现上存在线程安全问题。
T3 请阐述 Shark 与 Spark SQL 的关系。
答:Spark SQL 在 Shark 原有的架构上重写了逻辑执行计划的优化部分,解决了 Shark 存在的兼容问题。
T4 请分析 Spark SQL 出现的原因。
答:传统的关系数据库在大数据时代已经不能满足各种新增的用户需求。
① 用户需要从不同数据源执行各种操作,包括结构化和非结构化数据;
② 用户需要执行高级分析,比如机器学习和图像处理。