zoukankan      html  css  js  c++  java
  • SparkSession、SparkContext、SQLContext和HiveContext之间的区别。

    SparkContext 是什么?

    1. 驱动程序使用SparkContext与集群进行连接和通信,它可以帮助执行Spark任务,并与资源管理器(如YARN 或Mesos)进行协调。
    2. 使用SparkContext,可以访问其他上下文,比如SQLContext和HiveContext。
    3. 使用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。

  • 相关阅读:
    [转]HD钱包的助记词与密钥生成原理
    [转]简单科普私钥、地址、助记词、Keystore的区别
    [转]Sequelize 中文API文档-4. 查询与原始查询
    [转]Node.JS使用Sequelize操作MySQL
    [转]OmniLayer / omnicore API 中文版
    [转]usdt omnicore testnet 测试网络
    [转]USDT与omniCore钱包
    [转]BTC RPC API GetTransaction
    [转]比特币测试链——Testnet介绍
    [转]BTC手续费计算,如何设置手续费
  • 原文地址:https://www.cnblogs.com/lillcol/p/11233456.html
Copyright © 2011-2022 走看看