1、RDD(Spark1.0)->DataFrame(Spark1.3)->DataSet(Spark1.6)
2、Spark SQL提供了DataFrame和DataSet两种数据抽象
3、DataFrame就是RDD+Schema,可以认为是一张二维表格,劣势在于编译器不进行表格中的字段的类型检查,在运行期进行检查
4、DataSet是Spark最新的数据抽象,Spark的发展会逐步将DataSet作为主要的数据抽象,弱化RDD和DataFrame.DataSet包含了DataFrame所有的优化机制。除此之外提供了以样例类为Schema模型的强类型安全检查
5、DataFrame只是知道字段,但是不知道字段的类型。DataSet不仅知道字段,也知道字段类型
执行操作的时候是没办法在编译的时候检查是否类型失败的。对一个String进行减法操作,在执行的时候才报错
6、DataFrame=DataSet[Row]
7、DataFrame和DataSet都有可控的内存管理机制,所有数据都保存在非堆上,都使用了catalyst进行SQL的优化。
8、DataFrame和Dataset的许多操作都需要这个包进行支持 import spark.implicits._

SparkContext、SparkSession、StreamingContext

RDD: SparkConf 》 SparkContext
sparkSQL:SparkConf 》 SparkContext 》SQLContext、HiveContext 》SparkSession
(spark1.0用SQLContext、HiveContext spark2.0用SparkSession它包装了前两者)
sparkStream:SparkConf 》 SparkContext 》StreamingContext