《Spark编程基础》(Scala版)第六章简答题答案(自制)

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 出现的原因。

答:传统的关系数据库在大数据时代已经不能满足各种新增的用户需求。

① 用户需要从不同数据源执行各种操作,包括结构化和非结构化数据;

② 用户需要执行高级分析,比如机器学习和图像处理。

T5 RDD 和 DataFrame 有什么区别🌱

答:

① DataFrame 比原有的 RDD 转化方式更加简单易用,而且有更高的计算性能;

② RDD 是分布式 Java 对象的集合,但是,对象内部结构对 RDD 而言不可知;DataFrame 是一种以 RDD 为基础的分布式数据集,提供了详细的结构信息,就相当于关系数据库的一张表。

T6 Spark SQL 支持读写哪些类型的数据?

答:可以来自 RDD,也可以来自 Hive、HDFS 等外部数据源,还可以是 JSON 等格式的数据。

T7 RDD 转换得到 DataFrame 可以有哪两种方式🌱

答:

① 利用反射机制推断 RDD 模式:利用反射机制来推断包含特定类型对象的 RDD 模式,适合用于对已知数据结构的 RDD 转换;

② 使用编程方式定义 RDD 模式:使用编程接口构造一个模式,并将其应用在已知的 RDD 上。

T8 使用编程方式定义 RDD 模式的基本步骤是什么?🌱

答:

① 制作"表头"。"表头"是指表的模式,需要包含字段名称、字段类型和是否允许为空值等信息;

② 制作"表中的记录"。每条记录封装到一个 Row 对象中,并把所有记录的 Row 对象一起保存到一个 RDD 中;

③ 把"表头”和"表中的记录"拼装在一起。利用spark.createDataFrame()语句进行拼接,得到一个 DataFrame。

image-20240508200848054

T9 为了使得 Spark SQL 能够访问 Hive,需要做哪些准备工作?

答:

① 在使用 Spark SQL 访问 Hive 之前,需要安装 Hive;

② 为了让 Spark 能够访问 Hive,必须为 Spark 添加 Hive 支持。

posted @ 2024-05-16 21:43  100%Jacker_Channel  阅读(331)  评论(0)    收藏  举报