Update SparkSQL_Dataset和DataFrame简介.md
This commit is contained in:
parent
528e2ad09f
commit
f67e16ef34
@ -58,7 +58,7 @@ DataFrame内部的有明确Scheme结构,即列名、列字段类型都是已
|
|||||||
|
|
||||||
### 2.3 DataSet
|
### 2.3 DataSet
|
||||||
|
|
||||||
Dataset也是分布式的数据集合,在Spark 1.6版本被引入,它集成了RDD和DataFrame的优点,具备强类型的特点,同时支持lambda函数,但只能在Scala和Java语言中使用。在Spark 2.0后,为了方便开发者,Spark将DataFrame和Dataset的API融合到一起,提供了结构化的API(Structured API),即用户可以通过一套标准的API就能完成对两者的操作。
|
Dataset也是分布式的数据集合,在Spark 1.6版本被引入,它集成了RDD和DataFrame的优点,具备强类型的特点,同时支持Lambda函数,但只能在Scala和Java语言中使用。在Spark 2.0后,为了方便开发者,Spark将DataFrame和Dataset的API融合到一起,提供了结构化的API(Structured API),即用户可以通过一套标准的API就能完成对两者的操作。
|
||||||
|
|
||||||
> 这里注意一下:DataFrame被标记为Untyped API,而DataSet被标记为Typed API,后文会对两者做出解释。
|
> 这里注意一下:DataFrame被标记为Untyped API,而DataSet被标记为Typed API,后文会对两者做出解释。
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ Dataset也是分布式的数据集合,在Spark 1.6版本被引入,它集成
|
|||||||
|
|
||||||
在实际使用中,如果你用的是Spark SQL的查询语句,则直到运行时你才会发现有语法错误,而如果你用的是DataFrame和 Dataset,则在编译时就可以发现错误(这节省了开发时间和整体代价)。DataFrame和Dataset主要区别在于:
|
在实际使用中,如果你用的是Spark SQL的查询语句,则直到运行时你才会发现有语法错误,而如果你用的是DataFrame和 Dataset,则在编译时就可以发现错误(这节省了开发时间和整体代价)。DataFrame和Dataset主要区别在于:
|
||||||
|
|
||||||
在DataFrame中,当你调用了API之外的函数,编译器就会报错,但如果你使用了一个不存在的字段名字,编译器依然无法发现。而在Dataset中,因为其API都是用lambda函数和JVM类型对象表示的,所有不匹配的类型参数在编译时就会被发现。
|
在DataFrame中,当你调用了API之外的函数,编译器就会报错,但如果你使用了一个不存在的字段名字,编译器依然无法发现。而Dataset的API都是用Lambda函数和JVM类型对象表示的,所有不匹配的类型参数在编译时就会被发现。
|
||||||
|
|
||||||
以上这些最终都被解释成关于类型安全图谱,对应开发中的语法和分析错误。在图谱中,Dataset最严格,但对于开发者来说效率最高。
|
以上这些最终都被解释成关于类型安全图谱,对应开发中的语法和分析错误。在图谱中,Dataset最严格,但对于开发者来说效率最高。
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ val dataSet: Dataset[Person] = spark.read.json("people.json").as[Person]
|
|||||||
|
|
||||||
## 四、Spark SQL的运行原理
|
## 四、Spark SQL的运行原理
|
||||||
|
|
||||||
DataFrames、DataSets和Spark SQL的实际执行流程都是相同的:
|
DataFrame、DataSet和Spark SQL的实际执行流程都是相同的:
|
||||||
|
|
||||||
1. 进行DataFrame/Dataset/SQL编程;
|
1. 进行DataFrame/Dataset/SQL编程;
|
||||||
2. 如果是有效的代码,即代码没有编译错误,Spark会将其转换为一个逻辑计划;
|
2. 如果是有效的代码,即代码没有编译错误,Spark会将其转换为一个逻辑计划;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user