Update SparkSQL_Dataset和DataFrame简介.md

This commit is contained in:
heibaiying 2019-06-05 07:09:45 +08:00 committed by GitHub
parent 528e2ad09f
commit f67e16ef34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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会将其转换为一个逻辑计划