SparkSQL介绍
基本概念
Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。 其前身是 Shark,给熟悉 RDBMS ,但又不理解 MapReduce 的技术人员提供快速上手的工具。 Shark 是伯克利实验室 Spark 生态环境的组件之一,是基于 Hive 所开发的工具,其能运行在 Spark 引擎上, SparkSQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便。
数据兼容方面 SparkSQL 不但兼容 Hive,还可以从 RDD、parquet 文件、JSON 文件中
获取数据,未来版本甚至支持获取 RDBMS 数据以及 cassandra 等 NOSQL 数据;性能优化方面 除了采取 In-Memory Columnar Storage、byte-code generation 等优化技术
外、将会引进 Cost Model 对查询进行动态评估、获取最佳物理计划等等;组件扩展方面 无论是 SQL 的语法解析器、分析器还是优化器都可以重新定义,进行扩
展。
对于开发人员来讲,SparkSQL 可以简化 RDD 的开发,提高开发效率,且执行效率非常快,所以实际工作中,基本上采用的就是 SparkSQL。Spark SQL 为了简化 RDD 的开发,提高开发效率,提供了 2 个编程抽象,类似 Spark Core 中的 RDD :DataFrame 和 DataSet。
SparkSQL 特点
1.易整合
无缝的整合了 SQL 查询和 Spark 编程。
2.统一的数据访问
使用相同的方式连接不同的数据源。
3.兼容 Hive
在已有的仓库上直接运行 SQL 或者 HiveQL。
4.标准数据连接
通过 JDBC 或者 ODBC 来连接。
DataFrame
在 Spark 中,DataFrame 是一种以 RDD 为基础的分布式数据集,类似于传统数据库中的二维表格。DataFrame 与 RDD 的主要区别在于,前者带有 schema 元信息,即 DataFrame所表示的二维表数据集的每一列都带有名称和类型。这使得 Spark SQL 得以洞察更多的结构信息,从而对藏于 DataFrame 背后的数据源以及作用于 DataFrame 之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标。反观 RDD,由于无从得知所存数据元素的具体内部结构,Spark Core 只能在 stage 层面进行简单、通用的流水线优化。 同时,与 Hive 类似,DataFrame 也支持嵌套数据类型(struct、array 和 map)。从 API 易用性的角度上看,DataFrame API 提供的是一套高层的关系操作,比函数式的 RDD API 要更加友好,门槛更低。
上图直观地体现了 DataFrame 和 RDD 的区别。
左侧的 RDD[Person]虽然以 Person 为类型参数,但 Spark 框架本身不了解 Person 类的内部结构。而右侧的 DataFrame 却提供了详细的结构信息,使得 Spark SQL 可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么。
DataFrame 是为数据提供了 Schema 的视图,可以把它当做数据库中的一张表来对待。 DataFrame 也是懒执行的,但性能上比 RDD 要高,主要原因:优化的执行计划,即查询计划通过 Spark catalyst optimiser 进行优化。
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 来表示。获取数据时需要指定顺序。
SparkSQL介绍相关推荐
- Spark _21 _SparkSQL介绍
Shark Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上,当数据全部load在内存的话,将 ...
- spark-sql建表语句限制_SparkSQL
SparkSQL介绍 Hive是Shark的前身,Shark是SparkSQL的前身,SparkSQL产生的根本原因是其完全脱离了Hive的限制. SparkSQL支持查询原生的RDD. RDD是Sp ...
- SparkSql学习记录
目录 一.SparkSQL介绍 二.SparkSQL的编程模型(DataFrame和DataSet) 2.1 编程模型简介 2.2 RDD\DataSet\DataFrame 三者的区别 2.3 Sp ...
- 小白如何学习大数据开发,大数据学习路线是怎样的?
零基础的同学学习大数据开发不能急于求成,要分阶段分步骤来一步步完成,科多大数据给大家来分享一下大数据的学习路线是什么?小白该怎么学习大数据呢,大概可以分为四步: 大数据学习资料分享群142973723 ...
- python spark视频_Spark2.x+Python大数据机器学习视频课程
本课程系统讲解如何在Spark2.0上高效运用Python来处理数据并建立机器学习模型,帮助读者开发并部署高效可拓展的实时Spark解决方案. 第一章.搭建Spark 2.x+Python开发环境及基 ...
- 2018大数据学习路线从入门到精通
最近很多人问小编现在学习大数据这么多,他们都是如何学习的呢.很多初学者在萌生向大数据方向发展的想法之后,不免产生一些疑问,应该怎样入门?应该学习哪些技术?学习路线又是什么?今天小编特意为大家整理了一份 ...
- 做为一名大数据新手,如何成为大数据工程师?附上学习路线
这几年来大数据非常的热门,到处都有大数据分析的演讲. 演讲内容通常是宣传各种大数据分析成功的案例. 但实际上大数据该怎么做呢? 大部份的讨论似乎都仅止于怎么搜集大量的数据, 然后用个工具(hadoop ...
- 大数据学习路线图(2023完整版)适合收藏
大数据开发是一门涉及处理和分析大规模数据的技术领域,随着大数据技术的不断发展和应用,对大数据开发人员的需求也在逐渐增加.就业前景相对较好,尤其在科技行业和数据驱动型企业中.大数据开发的前景还是有很多优 ...
- spark技术学习与思考(sparkcoresparksql)
目录 1.spark 基础 1.1 spark 发展历程 1.2 spark 与 mapreduce 对比 1.3 spark 运行模式 1.4 spark 常用命令 1.5 spark 底层执行原理 ...
最新文章
- iOS一些实用的技巧
- 物联网白皮书【2018】重磅发布|今年的物联网产业交出了一张怎样的答卷
- insightface mxnet训练horovod版
- 深入浅出多线程系列之四:简单的同步 lock
- 360怎么看电脑配置_Win10系统自带杀毒和垃圾清理好么?需不需要安装360卫士
- 【软考-软件设计师】计算机指令系统
- css里calculate,calc() ---一个会计算的css属性
- 图解ARP协议(六)RARP与IARP:被遗忘的兄弟协议
- ImportError: No module named setuptools 解决方法
- 【CodeForces - 616C 】The Labyrinth点石成金(并查集,dfs)
- PHP中插件机制的一种实现方案
- 要重复多少次变成潜意识_新股要申购多少次才能保证一定中签?
- windows命令行设置和系统快捷键
- Linux下如何查找sqlnet.ora 和listener.ora 和tnsnames.ora 配置文件的目录
- Javascript特效:普通倒计时
- 从零基础入门Tensorflow2.0 ----一、3.2 实战深度神经网络(批归一化)
- 拓端tecdat|R语言中进行Spearman等级相关分析
- 新装的电脑执行maven install命令一直报Could not find artifact jdk.tools:jdk.tools:jar:1.7
- VBS以强制启用宏的方式打开EXCEL文件,无视用户设置
- linux内核空间和用户空间认识和区别