|
SparkContext?作为?RDD?的创建者和入口, 其主要作用有如下两点
为什么无法使用?SparkContext?作为?SparkSQL?的入口?
-
SparkContext?在读取文件的时候, 是不包含?Schema?信息的, 因为读取出来的是?RDD -
SparkContext?在整合数据源如?Cassandra,?JSON,?Parquet?等的时候是不灵活的, 而?DataFrame?和?Dataset?一开始的设计目标就是要支持更多的数据源 -
SparkContext?的调度方式是直接调度?RDD, 但是一般情况下针对结构化数据的访问, 会先通过优化器优化一下
所以?SparkContext?确实已经不适合作为?SparkSQL?的入口, 所以刚开始的时候?Spark?团队为?SparkSQL?设计了两个入口点, 一个是?SQLContext?对应?Spark?标准的?SQL?执行, 另外一个是?HiveContext?对应?HiveSQL?的执行和?Hive?的支持.
在?Spark 2.0?的时候, 为了解决入口点不统一的问题, 创建了一个新的入口点?SparkSession, 作为整个?Spark?生态工具的统一入口点, 包括了?SQLContext,?HiveContext,?SparkContext?等组件的功能
新的入口应该有什么特性?
|