第43课:Spark 2.0编程实战之SparkSession、DataFrame、DataSet开发实战
2017年5月份左右,老师个人认为需要等到Spark 2.2版本
DataSet背后会被Tungsten优化,而这里面会采用Whole-Stage Code Generation的技术,所以出错的时候定位错误和调优非常困难
例如for循环翻译成了自己的方式,出错的话,错误信息定位就非常困难,生产环境面临错误和调优,搞不定了还是要用RDD
因此 ,RDD是万能的 基于rdd的spark core是王道
SQL是无类型的
DataFrame是弱类型的
DataSet是强类型的
SQL是无类型的:例如写的sql语法,数据类型是否对,列存在不存在在编写sql语句的时候判定不出来,只有运行的时候才发现是什么问题.
DataFrame是弱类型的:相当于DataSet[Row],DataFrame其实就是一张表,如在表中声明一些列,但实际运行中其中一些列不存在值,是弱耦合的.
DataSet是强类型的:必须严格声明,而且类型要匹配,在编译时期就决定了数据类型是不是准确.
DataFrame其实是一张表
DataFrame -》DataSet[Row]
as[U : Encod