SparkSession、SparkContext、SQLContext和HiveContext之间的区别。
2024-10-07 19:55:14
SparkContext 是什么?
- 驱动程序使用SparkContext与集群进行连接和通信,它可以帮助执行Spark任务,并与资源管理器(如YARN 或Mesos)进行协调。
- 使用SparkContext,可以访问其他上下文,比如SQLContext和HiveContext。
- 使用SparkContext,我们可以为Spark作业设置配置参数。
如果您在spark-shell中,那么SparkContext已经为您提供了,并被分配给变量sc。
如果还没有SparkContext,可以先创建一个SparkConf。
//set up the spark configuration
val sparkConf = new SparkConf().setAppName("hirw").setMaster("yarn")
//get SparkContext using the SparkConf
val sc = new SparkContext(sparkConf)
SQLContext 是什么?
SQLContext是通往SparkSQL的入口。下面是如何使用SparkContext创建SQLContext。
// sc is an existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
一旦有了SQLContext,就可以开始处理DataFrame、DataSet等。
HiveContext 是什么?
HiveContext是通往hive入口。
HiveContext具有SQLContext的所有功能。
实际上,如果查看API文档,就会发现HiveContext扩展了SQLContext,这意味着它支持SQLContext支持的功能以及更多(Hive特定的功能)
public class HiveContext extends SQLContext implements Logging
下面是如何使用SparkContext获得HiveContext
// sc is an existing SparkContext.
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
SparkSession 是什么?
SparkSession是在Spark 2.0中引入的,
它使开发人员可以轻松地使用它,这样我们就不用担心不同的上下文,
并简化了对不同上下文的访问。通过访问SparkSession,我们可以自动访问SparkContext。
下面是如何创建一个SparkSession
val spark = SparkSession
.builder()
.appName("hirw-test")
.config("spark.some.config.option", "some-value")
.getOrCreate()
SparkSession现在是Spark的新入口点,它替换了旧的SQLContext和HiveContext。注意,保留旧的SQLContext和HiveContext是为了向后兼容。
一旦我们访问了SparkSession,我们就可以开始使用DataFrame和Dataset了。
下面是我们如何使用Hive支持创建SparkSession。
val spark = SparkSession
.builder()
.appName("hirw-hive-test")
.config("spark.sql.warehouse.dir", warehouseLocation)
.enableHiveSupport()
.getOrCreate()
因此,如果您正在使用Spark 2.0或更高版本,建议使用SparkSession。
最新文章
- Web(Jsp+ Servlet)开发中如何解决中文乱码问题
- phpMyAdmin提示:配置文件权限错误,无法写入!解决方法
- 【转】mysql忘记密码(未初始化)
- windows下安装coreseek/sphinx
- SpringAOP所支持的AspectJ切点指示器
- The 15th Zhejiang University Programming Contest
- canvas加载gif
- POJ 1734
- shell条件测试
- WebService cxf 接口中获得拦截器参数
- html5权威指南:定制input元素
- 如何获取path与basePath
- BOX
- Prometheus监控数据格式学习
- c#学习个人总结
- element-ui <;el-input>; 注册blur事件
- shiro课程的学习
- VueJs大全;vee-validate(一个验证vue插件), bootstrap-vue, axios简介。
- Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK. Looked here: C:\Users\Administrator\AppData\Local\Android\sdk\tools\templates\gradle\wrapper
- [Spark SQL_1] Spark SQL 配置