• 关于SparkSession


    关于SparkSession

    任何Spark程序的第一步都是先创建SparkSession。在Spark-Shell或者其他交互模式中,SparkSession已经预先被创建好了,但在正常编写的Spark程序中,我们必须手动创建SparkSession。
    在一些遗留的Spark代码中,我们一般使用 new SparkContext 这种模式。但在新的Spark版本中,我们应该避免使用这种模式,尽量使用SparkSession,因为它可以更健壮地实例化Spark和SQL Contexts,并确保没有Context冲突。我们可以通过以下方法在Spark程序中创建session:

    //Creating a SparkSession in Scala
    import org.apache.spark.sql.SparkSession
    val spark = SparkSession.builder().appName("Databricks Spark Example")
     	 .config("spark.sql.warehouse.dir", "/user/hive/warehouse")
      	.getOrCreate()
    
    # Creating a SparkSession in Python
    from pyspark.sql import SparkSession
    spark = SparkSession.builder.master("local").appName("Word Count")
        .config("spark.some.config.option", "some-value")
        .getOrCreate()
    

    在我们创建SparkSession之后,我们就能运行我们的Spark 代码了。通过SparkSession,我们能使用Spark中原有的低级API、遗留的Contexts和配置等。
    SparkSession仅存在于Spark 2.X 中,对于较旧的版本,我们则需要直接创建 SparkContextSQLContext

    SparkSession中的SparkContext对象可以告诉Spark程序如何连接访问Spark集群。 我们可以通过它在Spark中使用一些较低级API,例如创建一个RDD,累加器和广播变量等。 在旧版的文档或者例子中,我们通常使用变量 sc 来表示SparkContext。

    在大多数情况下,我们不需要显式初始化SparkContext; 而尽量通过SparkSession来访问它。 如果需要,我们应该通过getOrCreate的方式创建它:

    //in Scala
    import org.apache.spark.SparkContext
    val sc = SparkContext.getOrCreate()
    

    在以前版本的Spark中,SQLContext和HiveContext提供了使用DataFrames和Spark SQL的接口,并且通常作为变量sqlContext存储在示例,文档和遗留代码中。

    Spark 1.X实际上有两个Context, SparkContext和SQLContext,它们负责不同的功能。 前者专注于对Spark的中心抽象进行更细粒度的控制,而后者则专注于Spark SQL等更高级别的API。

    在Spark 2.X中,这两个API被集成到SparkSession中。 但是,这两个API仍然存在。但需要注意,请尽可能的直接使用SQLContext和SparkContext,而通过SparkSession访问它们

    参考资料

    [BOOK] Spark - The Definitive Guide

  • 相关阅读:
    潭州课堂25班:Ph201805201 第十二课 new方法,定制属性访问,描述符与装饰器 (课堂笔记)
    潭州课堂25班:Ph201805201 第十一课 继承,多继承和魔术方法,属性和方法 (课堂笔记)
    Storm笔记
    java代码。继承。。。很戳我的心啊。。不太懂。super的真正用法
    java代码。从来没想过java里的继承是多么的难懂。如哲学
    java代码继承疑惑,请有心人解答
    java冒泡排序
    java数组复制
    java继承。顾不了
    java继承初级
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10611294.html
Copyright © 2020-2023  润新知