Spark内置数据结构之间的差异【RDD、DataFrame、Dataset】

一.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。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读