From f67e16ef34e1860ca6d033a4856efee1a7892133 Mon Sep 17 00:00:00 2001 From: heibaiying <31504331+heibaiying@users.noreply.github.com> Date: Wed, 5 Jun 2019 07:09:45 +0800 Subject: [PATCH] =?UTF-8?q?Update=20SparkSQL=5FDataset=E5=92=8CDataFrame?= =?UTF-8?q?=E7=AE=80=E4=BB=8B.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/SparkSQL_Dataset和DataFrame简介.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/notes/SparkSQL_Dataset和DataFrame简介.md b/notes/SparkSQL_Dataset和DataFrame简介.md index 0ff72c6..a70dc2c 100644 --- a/notes/SparkSQL_Dataset和DataFrame简介.md +++ b/notes/SparkSQL_Dataset和DataFrame简介.md @@ -58,7 +58,7 @@ DataFrame内部的有明确Scheme结构,即列名、列字段类型都是已 ### 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,后文会对两者做出解释。 @@ -72,7 +72,7 @@ Dataset也是分布式的数据集合,在Spark 1.6版本被引入,它集成 在实际使用中,如果你用的是Spark SQL的查询语句,则直到运行时你才会发现有语法错误,而如果你用的是DataFrame和 Dataset,则在编译时就可以发现错误(这节省了开发时间和整体代价)。DataFrame和Dataset主要区别在于: -在DataFrame中,当你调用了API之外的函数,编译器就会报错,但如果你使用了一个不存在的字段名字,编译器依然无法发现。而在Dataset中,因为其API都是用lambda函数和JVM类型对象表示的,所有不匹配的类型参数在编译时就会被发现。 +在DataFrame中,当你调用了API之外的函数,编译器就会报错,但如果你使用了一个不存在的字段名字,编译器依然无法发现。而Dataset的API都是用Lambda函数和JVM类型对象表示的,所有不匹配的类型参数在编译时就会被发现。 以上这些最终都被解释成关于类型安全图谱,对应开发中的语法和分析错误。在图谱中,Dataset最严格,但对于开发者来说效率最高。 @@ -112,7 +112,7 @@ val dataSet: Dataset[Person] = spark.read.json("people.json").as[Person] ## 四、Spark SQL的运行原理 -DataFrames、DataSets和Spark SQL的实际执行流程都是相同的: +DataFrame、DataSet和Spark SQL的实际执行流程都是相同的: 1. 进行DataFrame/Dataset/SQL编程; 2. 如果是有效的代码,即代码没有编译错误,Spark会将其转换为一个逻辑计划;