Apache Spark APIs 的三剑客,RDDs, DataFrames, and Datasets
2018-03-03 21:14
585 查看
原文链接
罗干翻译
在软件开发者(码农)眼中,没有什么比直接调API更爽的了,因为这更加简单,高效(高产的码农),)符合人类的直觉,和更有说服力.spark之所以吸引开发者的注意力,主要因为它能提供易于使用的API,来处理大规模数据,无论采用scala,python,还是java.
在这篇文章中我们讨论三种API,分别是RDDs, DataFrames, and Datasets,在 Spark 2.2 及更高版本中这三个API都可以使用,我们将说明在不同的情况下,采用何种API及其原因,勾勒出不同API的性能和特点,并指明在何种场景下应使用何种API,我将重点讨论DataFrames and Datasets,因为在Apache Spark 2.0中,这两个是通用API.
我们的初衷是用最少的概念,最简洁的的方式去理解spark,并且提供处理结构化数据的方法,通过这种结构,spark 可以提供更高层次抽象的API
自spark概念提出以来,RDD是Spark中面向用户的主要API。 RDD核心内容是数据元素的无序分布式集合,分布在集群中的节点上,可以与提供低级API转换和并行操作。
何时使用RDD
考虑如下场景:
RDD 在Apache Spark 2.0 有哪些改变?
你可能会问:RDD是否被降级为二等公民? 他们是否被弃用?
答案是一个响亮的否!
更重要的是,您可以在下面注意到,通过简单的API方法调用,您可以随意在DataFrame或Dataset和RDD之间移动 或者将DataFrame和Datasets建立在RDD之上。
在我们对Apache Spark 2.0网络研讨会和后续博客的预览中,我们提到在Spark 2.0中,DataFrame API将与Datasets API合并,统一跨库的数据处理功能。 由于这种统一,开发人员现在有更少的概念要学习或记忆,并且使用一个名为Dataset的高级别和类型安全的API。
未完待续
罗干翻译
在软件开发者(码农)眼中,没有什么比直接调API更爽的了,因为这更加简单,高效(高产的码农),)符合人类的直觉,和更有说服力.spark之所以吸引开发者的注意力,主要因为它能提供易于使用的API,来处理大规模数据,无论采用scala,python,还是java.
在这篇文章中我们讨论三种API,分别是RDDs, DataFrames, and Datasets,在 Spark 2.2 及更高版本中这三个API都可以使用,我们将说明在不同的情况下,采用何种API及其原因,勾勒出不同API的性能和特点,并指明在何种场景下应使用何种API,我将重点讨论DataFrames and Datasets,因为在Apache Spark 2.0中,这两个是通用API.
我们的初衷是用最少的概念,最简洁的的方式去理解spark,并且提供处理结构化数据的方法,通过这种结构,spark 可以提供更高层次抽象的API
1. 弹性分布式数据集合(RDD)
RDD 是spark用户最先使用的API,RDD的核心是一个无序的分布集合自spark概念提出以来,RDD是Spark中面向用户的主要API。 RDD核心内容是数据元素的无序分布式集合,分布在集群中的节点上,可以与提供低级API转换和并行操作。
何时使用RDD
考虑如下场景:
你需要对你的数据集进行低级转换和控制; 你的数据是非结构化的,例如媒体流或文本流; 你想用函数式性编程来处理你的数据,而不是域特定的表达式; 您不关心在按名称或列处理或访问数据属性时施加模式(如柱状格式); 您可以放弃如DataFrame和Datasets所具有的结构化和半结构化数据的性能优势。
RDD 在Apache Spark 2.0 有哪些改变?
你可能会问:RDD是否被降级为二等公民? 他们是否被弃用?
答案是一个响亮的否!
更重要的是,您可以在下面注意到,通过简单的API方法调用,您可以随意在DataFrame或Dataset和RDD之间移动 或者将DataFrame和Datasets建立在RDD之上。
1. DataFrames
像RDD一样,DataFrame是一个不可变的分布式数据集合。 与RDD不同,数据被组织到命名列中,就像关系数据库中的表一样。 DataFrame旨在使大型数据集的处理更加容易,允许开发人员将结构强加到分布式数据集上,从而实现更高级别的抽象; 它提供了一个特定于领域的语言API来操纵分布式数据; 并使Spark不仅影响专业数据工程师更影响更广泛的受众群体.在我们对Apache Spark 2.0网络研讨会和后续博客的预览中,我们提到在Spark 2.0中,DataFrame API将与Datasets API合并,统一跨库的数据处理功能。 由于这种统一,开发人员现在有更少的概念要学习或记忆,并且使用一个名为Dataset的高级别和类型安全的API。
1. Datasets
从Spark 2.0开始,Dataset具有两种截然不同的API特性:强类型API和无类型API,如下表所示。 从概念上讲,将DataFrame视为通用对象Dataset [Row]的集合的别名,其中Row是通用的非类型化JVM对象。 相比之下,数据集是强类型JVM对象的集合,由您在Scala中定义的案例类或Java中的类指定。未完待续
相关文章推荐
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
- rdds-dataframes-and-datasets
- pyspark-Spark SQL, DataFrames and Datasets Guide
- spark2.2官方教程笔记-Spark SQL, DataFrames and Datasets向导
- Spark SQL,DataFrames and DataSets Guide官方文档翻译
- Spark -9:Spark SQL, DataFrames and Datasets 编程指南
- Spark SQL, DataFrames and Datasets Guide
- 学习spark:五、Spark SQL, DataFrames and Datasets Guide
- Spark SQL, DataFrames and Datasets(Spark-2.1.1)指南
- 【Spark】Spark SQL, DataFrames and Datasets Guide(翻译文,持续更新)
- Spark SQL,DataFrames and Datasets Guide
- Spark SQL, DataFrames and Datasets Guide
- Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南
- Spark RDDs vs DataFrames vs SparkSQL
- Along with all the above benefits, you cannot overlook the space efficiency and performance gains in using DataFrames and Dataset APIs for two reasons.
- Introducing DataFrames in Apache Spark for Large Scale Data Science(中英双语)
- Spark SQL, DataFrames and Datasets Guide
- Spark SQL and DataFrame Guide(1.4.1)——之DataFrames
- Spark SQL, DataFrames 和 Datasets 指南