一.RDD的升级版Dataset
请注意,在Spark 2.0之前,Spark的主要编程接口是弹性分布式数据集(RDD)。在Spark 2.0之后,RDD被Dataset取代,Dataset的类型像RDD一样强,但具有更丰富的优化功能。仍支持RDD界面。但是,强烈建议切换到使用Dataset,Dataset的性能比RDD更好。
二.Dataset特点
Dataset是数据的分布式集合。Dataset是Spark 1.6中添加的新接口,它具有RDD的优点(强类型输入,使用强大的lambda函数的能力)以及Spark SQL的优化执行引擎的优点。Dataset可以被构造从JVM对象,然后使用功能性的转换(操作map,flatMap,filter等等)。Dataset API在Scala和 Java中可用。Python不支持Dataset API。但是由于Python的动态特性,Dataset API的许多优点已经可用(即,可以自然地通过名称访问行的字段 row.columnName)。R的情况类似。
三.DataFrame特点
DataFrame是组织为命名列的数据集。从概念上讲,它等效于关系数据库中的表或R / Python中的数据框,但是在后台进行了更丰富的优化。可以从多种来源构造DataFrame,例如:结构化数据文件,Hive中的表,外部数据库或现有RDD。DataFrame API在Scala,Java,Python和R中可用。在Scala API中,DataFrame只是类型别名Dataset[Row]。而在Java API中,用户需要使用Dataset来代表DataFrame。