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 | <dependency> |