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 ?等组件的功能
新的入口应该有什么特性?
|