spark 第一代API----RDD:
DataFrame核心特征:
- 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 the RDD is hash-partitioned)
- Optionally,a list of preferred locations to compute each splits on(e.g. block locations for an HDFS file)
spark 第二代API----DataFrame:
DataFrame核心特征:
- 包含了以Row为单位的每行数据的列信息,此时DataFrame就是Table;
- Tungsten:新的执行引擎;
- Catalyst:新的语法解析框架
提升计算效率、减少数据读取、底层计算优化
spark 第三代API----DataSet:
DataSet核心价值和好处是:Encoder
- 编译时的类型安全检查,不需要再执行事情才发现类型不匹配;
- 性能的极大提升;
- 内存使用极大降低、减少GC......
- 极大地减少网络数据的传输......
- 极大地减少了采用Scala和Java编程的代码的差异性,DataSet还不支持Python 、R
- dataSet会同时可以兼顾Functional和Relational Programming;
- dataSet可以统一流计算、SQ、ML等的API编程
- dataSet最重要的是效率;底层的Tungsten的优化、Encoder、数据在内存和磁盘的存储等等