Spark第一代API:RDD编程
RDD: 五大核心特征:安全
* - A list of partitions网络
* - A function for computing each split框架
* - A list of dependencies on other RDDs性能
* - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)优化
* - Optionally, a list of preferred locations to compute each split on (e.g. block locations forspa
* an HDFS file)code
Spark第二代API:DataFrame内存
DataFrame: 核心特征:ci
* - 包含了以Row为单位的每行数据的列的信息,此时DataFrame就是Table;
* - Tungsten:新的执行引擎
* - Catalyst:新的语法解析框架
提高计算效率、减小数据读取、底层计算优化;
Spark第三代API:DataSet
DataSet的核心价值和好处:Encoder
* - 编译时的类型安全检查,不须要在执行时期才发现类型不匹配;
* - 性能的极大的提高
* - 内存使用极大下降、减小GC...
* -极大的减小网络数据的传输...
* -极大的极少采用Scala和Java编程的代码的差别性...
补充:
1,DataSet会同时能够兼顾Functional和Relational Programming;
2,DataSet能够统一流计算、SQL、ML等的API编程;
3,DataSet最最重要的是效率:底层Tungsten的优化、Encoder、数据在内存和磁盘等的存储等等;