0%

sparkSQL简介

sparkSQL简介

sparkSQL是Spark用于结构化数据处理的Spark模块,为了给RDBMS但是又不了解MapReduce的开发人员提供的快速入手的工具,在一开始的时候是基于Hive进行开发的,但是后来由于为了摆脱对Hive的依赖,SparkSQL进行了重新开发

  • 数据兼容方面 SparkSQL 不但兼容 Hive,还可以从 RDD、parquet 文件、JSON 文件中获取数据,未来版本甚至支持获取 RDBMS 数据以及 cassandra 等 NOSQL 数据
  • 性能优化方面 除了采取 In-Memory Columnar Storage、byte-code generation 等优化技术外、将会引进 Cost Model 对查询进行动态评估、获取最佳物理计划等等
  • 组件扩展方面 无论是 SQL 的语法解析器、分析器还是优化器都可以重新定义,进行扩展

SparkSQL为了简化RDD的开发,提供了两个编程抽象

  • DataFrame
  • DataSet

DataFrame

DataFrame是一种以RDD为基础的分布式数据集,类似于关系型数据库的Table表,与RDD的主要区别在于,DataFrame带有schema元信息,表示数据集的每一列都带有名称和类型,而RDD不知道所存数据元素的具体内部结构,只能进行简单、通用的流水线优化。

DataSet

DataSet是分布式数据集合,是DataFrame的一个扩展,是强类型的,可以使用如DataSet[User],而DataFrame其实是DataSet的一个特例,DataFrame=DataSet[Row]

依赖

所需要的maven依赖

1
2
3
4
5
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.1.1</version>
</dependency>