0
点赞
收藏
分享

微信扫一扫

SparkSQL概述

九点韶留学 2022-09-15 阅读 245


SparkSQL 概述

SparkSQL 是什么

SparkSQL概述_sql

Spark SQL 是Spark 用于结构化数据(structured data)处理的 Spark 模块。

SparkSQL 特点

1易整合
无缝的整合了 SQL 查询和 Spark 编程

2统一的数据访问
使用相同的方式连接不同的数据源

3兼容 Hive
在已有的仓库上直接运行 SQL 或者 HiveQL

4标准数据连接
通过 JDBC 或者 ODBC 来连接

Shark

SparkSQL 的前身是 Shark
Hive 是早期唯一运行在Hadoop 上的SQL-on-Hadoop 工具。但是 MapReduce 计算过程中大量的中间磁盘落地过程消耗了大量的 I/O,降低的运行效率,为了提高 SQL-on-Hadoop 的效率,大量的SQL-on-Hadoop 工具开始产生,其中表现较为突出的是:

  • Drill
  • Impala
  • Shark

drill    英[drɪl] 美[drɪl]
n. 钻; 钻头; 钻床; 钻机; 练习; 训练; (应对紧急情况的)演习;

其中 Shark 是伯克利实验室 Spark 生态环境的组件之一,是基于Hive 所开发的工具,它修改了下图所示的右下角的内存管理、物理计划、执行三个模块,并使之能运行在 Spark 引擎上。

SparkSQL概述_hive_02

Shark 的出现,使得SQL-on-Hadoop 的性能比Hive 有了 10-100 倍的提高。

SparkSQL概述_spark_03

SparkSQL产生

Shark 对于 Hive 的太多依赖(如采用 Hive 的语法解析器、查询优化器等等),制约了 Spark 的One Stack Rule Them All 的既定方针,制约了 Spark 各个组件的相互集成,所以提出了 SparkSQL 项目。

SparkSQL 抛弃原有 Shark 的代码,汲取了 Shark 的一些优点,如内存列存储(In-Memory Columnar Storage)、Hive 兼容性等,重新开发了SparkSQL 代码;

由于摆脱了对Hive 的依赖性,SparkSQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便

DataFrame 是什么

在 Spark 中,DataFrame 是一种以 RDD 为基础的分布式数据集,类似于传统数据库中的二维表格。

frame    英[freɪm] 美[freɪm] n.    (图画、门、玻璃等的)框架;

SparkSQL概述_spark_04


DataFrame 与 RDD 的主要区别在于,前者带有 schema 元信息,即 DataFrame 所表示的二维表数据集的每一列都带有名称和类型。

反观 RDD,由于无从得知所存数据元素的具体内部结构,Spark Core 只能在 stage 层面进行简单、通用的流水线优化。

同时,与Hive 类似,DataFrame 也支持嵌套数据类型(struct、array 和 map)。

从 API 易用性的角度上看,DataFrame API 提供的是一套高层的关系操作,比函数式的 RDD API 要更加友好,门槛更低。

DataSet 是什么

DataSet 是分布式数据集合。DataSet 是Spark 1.6 中添加的一个新抽象,是DataFrame 的一个扩展。

它提供了RDD 的优势(强类型,使用强大的 lambda 函数的能力)以及Spark SQL 优化执行引擎的优点。
DataSet 也可以使用功能性的转换(操作 map,flatMap,filter 等等)。

  • DataSet 是DataFrame API 的一个扩展,是SparkSQL 最新的数据抽象
  • 用户友好的 API 风格,既具有类型安全检查也具有DataFrame 的查询优化特性;
  • 用样例类来对DataSet 中定义数据的结构信息,样例类中每个属性的名称直接映射到
  • DataSet 中的字段名称;
  • DataSet 是强类型的。比如可以有 DataSet[Car],DataSet[Person]。
  • DataFrame 是DataSet 的特列,DataFrame=DataSet[Row] ,所以可以通过 as 方法将DataFrame 转换为DataSet。Row 是一个类型,跟 Car、Person 这些的类型一样,所有的表结构信息都用 Row 来表示。获取数据时需要指定顺序


举报

相关推荐

0 条评论