东阳网站建设,福州网站开发公司,推广网站详细教程,企业网站建设的类型文章目录Spark SQL1、Hive on SparkSQL2、SparkSQL 优点3、SparkSQL 特点1) 容易整合2) 统一的数据访问3) 兼容 Hive4) 标准的数据连接4、DataFrame 是什么5、DataSet 是什么Spark SQL
Spark SQL 是 Spark 用于结构化数据(structured data) 处理的Spark模块。
1、Hive on Spa…
文章目录Spark SQL1、Hive on SparkSQL2、SparkSQL 优点3、SparkSQL 特点1) 容易整合2) 统一的数据访问3) 兼容 Hive4) 标准的数据连接4、DataFrame 是什么5、DataSet 是什么Spark SQL
Spark SQL 是 Spark 用于结构化数据(structured data) 处理的Spark模块。
1、Hive on SparkSQL
SparkSQL 的前身是Shark给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具。 Hive 是早期唯一运行在Hadoop 上的SQL-on-Hadoop工具。但是MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O降低的运行效率为了提高SQL-on-Hadoop的效率大量的SQL-on-Hadoop 工具开始产生其实表现较为突出的是 Drill Impala Shark 其中 Shark 是伯克利实验室 Spark 生态环境的组件之一是基于Hive 所开发的工具它修改了内存管理物理计划执行三个模块并使之能运行在Spark引擎上。Shark 的出现使得SQL-on-Hadoop 的性能比 Hive 有了10-100倍的提高。 但是随着Spark 的发展对于野心勃勃的 Spark 团队来说Shark 对于 Hive 的太多依赖如采用Hive的语法解析器查询优化器等等制约了 Spark 的 One Stack Rule Them All 的既定方针制约了 Spark 各个组件的相互集成所以提出了SparkSQL 项目。SparkSQL 抛弃原有Shark的代码汲取了Shark的一些优点如内存列存储In-Memory Colummnar Storage、Hive 兼容性等重新开发了SparkSQL代码由于摆脱了对Hive的依赖性SparkSQL 无论在数据兼容性能优化组件扩展方面都得到了极大的方便。 数据兼容方面SparkSQL 不但兼容 Hive还可以从RDDparquet 文件JSON 文件中怕哪个获取数据未来版本甚至支持获取RDBMS 数据 、以及cassandra 等 NoSQL 数据。 性能优化方面除了采取In-Menory Columnar Storagebyte-code generation 等优化技术外将会引进Cost Model 对查询进行动态评估获取最佳物理计划等等。 组件扩展方面无论是SQL的语法解析器分析器还是优化器都可以重新定义进行扩展。
2、SparkSQL 优点
SparkSQL 作为Spark生态圈的一员继续发展而不再受限于Hive只是兼容Hive而Hive on Spark 是一个Hive 的发展计划该计划将Spark 作为 Hive 的底层引擎之一也就是说Hive将不再受限于一个引擎可以采用Map-ReduceTezSpark 等引擎。 对于开发人员来讲SparkSQL 可以简化 RDD 的开发提高开发效率且执行效率非常快所以实际工作中基本上采用的就是SparkSQLSpark SQL 为了简化RDD的开发提高开发效率提供了2个编程抽象类似SparkCore中的RDD。 DataFrame 和 DataSet
3、SparkSQL 特点
1) 容易整合
无缝的整合了 SQL 查询和 Spark 编程。
2) 统一的数据访问
使用相同的方式连接不同的数据源。比如MYSQL啊HbaseHive之类的。
3) 兼容 Hive
在已有的仓库上直接运行 SQL 或者 HiveSQL
4) 标准的数据连接
通过 JDBC 或者 ODBC。
4、DataFrame 是什么
在 Spark 中DataFrame 是一种以 RDD 为基础的分布式是数据集类似于传统数据库中的二维表格。DataFrame 与 RDD 的主要区别在于前者带有 schema 元信息即 DataFrame 所表示的二维表数据集的每一列都带有名称和类型。这使得 Spark SQL 得以洞察更多的结构信息从而对藏于 DataFrame 背后的数据源以及作用于 DataFrame 之上的变换进行了针对性的优化最终达到大幅提升运行时效率的目标。反观 RDD由于无从得知所存数据元素的具体内部结构Spark Core 只能在 stage 层面进行简单通用的流水线优化。 同时与 Hive 类似DataFrame 也支持嵌套数据类型structarray和 map 从API易容性的角度上看DataFrame API 提供的是一套高层的关系操作比函数式的RDD API 要更加友好门槛更低。 上面这张图直观地体现了 DataFrame 和 RDD的区别。 左侧的 RDD[Person] 虽然以 Person 为参数类型但 Spark 框架本身不了解 Person 类的内部结构。而右侧的DataFrame 却提供了详细的结构信息使得 Spark SQL 可以清楚地知道该数据集中包含哪些列每列的名称和类型各是什么。 DataFrame 是为数据提供了Schema元数据的视图。可以把它当做数据库中的一张表来对待DataFrame 也是懒执行的但性能上比RDD 要高主要原因优化的执行计划即查询计划通过 Spark catalyst optimiser 进行优化。
5、DataSet 是什么
DataSet 分布式数据集合。DateSet 是Spark1.6 中添加的一个新抽象是DataFrame 的一个扩展。它提供了 RDD 的优势强类型使用强大的lamba函数的能力以及 Spark SQL 优化执行引擎的特点。DataSet 也可以使用功能性的转换操作mapflatMap,fliter 等等。
DataSet 是 DataFrame API 的一个扩展是 SparkSQL 最新的数据抽象用户友好的API风格既具有类型安全检查也具有 DataFrame 的查询优化特性用样例类来对 DataSet 中定义数据的结构信息样例类中每个属性的名称直接映射到 DataSet 中的字段名称DataSet 是强类型的。比如可以有DataSet[Car]DataSet[Person]。DataFrame 是 DataSet 的特例DataFrameDataSet[Row] 所以可以通过 as 方法将DataFrame 转换为 DataSet。Row 是一个类型跟 CarPerson 这些的类型都一样所有的表结构信息都用Row来表示。获取数据时需要制定顺序。