spark三代API比较

spark 第一代API----RDD:

DataFrame核心特征:

  1. A list of partitions
  2. A function for computing each split
  3. A list of dependencies on other RDDs
  4. Optionally,a Partitioner for key-value RDDs(e.g. to say the RDD is  hash-partitioned)
  5. Optionally,a list of preferred locations to compute each splits on(e.g. block locations for an HDFS file)


spark 第二代API----DataFrame:

DataFrame核心特征:

  1. 包含了以Row为单位的每行数据的列信息,此时DataFrame就是Table;
  2. Tungsten:新的执行引擎;
  3. Catalyst:新的语法解析框架

提升计算效率、减少数据读取、底层计算优化



spark 第三代API----DataSet:

DataSet核心价值和好处是:Encoder

  1. 编译时的类型安全检查,不需要再执行事情才发现类型不匹配;
  2. 性能的极大提升;
  3. 内存使用极大降低、减少GC......
  4. 极大地减少网络数据的传输......
  5. 极大地减少了采用Scala和Java编程的代码的差异性,DataSet还不支持Python 、R
补充:
  1. dataSet会同时可以兼顾Functional和Relational Programming;
  2. dataSet可以统一流计算、SQ、ML等的API编程
  3. dataSet最重要的是效率;底层的Tungsten的优化、Encoder、数据在内存和磁盘的存储等等

你可能感兴趣的:(spark)