关于Datasets和DataFrame API存在很多混淆,因此在本文中,我们将了解Spark SQL,DataFrames和Datasets。
Spark SQL
它是一个用于结构化数据处理的Spark模块,它允许您编写更少的代码来完成工作,并且在底层,它可以智能地执行优化。Spark SQL模块由两个主要部分组成。我们将仅讨论本文的第一部分,它是结构API的表示,称为DataFrames和Datasets,它们定义了用于处理结构化数据的高级API。
Spark SQL模块的一个很酷的功能是能够执行SQL查询来执行数据处理,查询的结果将作为数据集或数据框返回。Spark SQL模块可以轻松读取数据并从以下任何格式写入数据; CSV,XML和JSON以及二进制数据的常见格式是Avro,Parquet和ORC。
DataFrames
数据框是一个分布式的数据集合,它按行组织,每行包含一组列,每列都有一个名称和一个关联的类型。换句话说,这个分布式数据集合具有由模式定义的结构。您可以将它视为关系数据库中的表,但在引擎盖下,它具有更丰富的优化。
与RDD一样,DataFrame提供两种类型的操作:转换和操作
对转换进行了延迟评估,并且热切地评估了操作。
创建DataFrame
有几种方法可以创建DataFrame; 其中一个常见的事情是需要隐式或显式地提供模式。
以下代码将完全使用Spark 2.x和Scala 2.11
从RDD创建DataFrame
val rdd = sc。并行化(1 到 10)。map(x =>(x,x * x))