关于SparkSession

作者: LestatZ | 来源:发表于2019-03-27 12:24 被阅读0次

    关于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

    相关文章

      网友评论

        本文标题:关于SparkSession

        本文链接:https://www.haomeiwen.com/subject/irqzvqtx.html