二、SparkSession

  1. spark sql 中所有功能的入口点是SparkSession 类。它可以用于创建DataFrame、注册DataFrametable、在table 上执行SQL、缓存table、读写文件等等。

  2. 要创建一个SparkSession,仅仅使用SparkSession.builder 即可:

    1. from pyspark.sql import SparkSession
    2. spark_session = SparkSession \
    3. .builder \
    4. .appName("Python Spark SQL basic example") \
    5. .config("spark.some.config.option", "some-value") \
    6. .getOrCreate()
  3. Builder 用于创建SparkSession,它的方法有(这些方法都返回self ):

    • .appName(name):给程序设定一个名字,用于在Spark web UI 中展示。如果未指定,则spark 会随机生成一个。

      • name:一个字符串,表示程序的名字
    • .config(key=None,value=None,conf=None):配置程序。这里设定的配置会直接传递给SparkConfSparkSession各自的配置。

      • key:一个字符串,表示配置名
      • value:对应配置的值
      • conf:一个SparkConf 实例

      有两种设置方式:

      • 通过键值对设置:

        1. SparkSession.builder.config("spark.some.config.option", "some-value")
      • 通过已有的SparkConf 设置:

        1. SparkSession.builder.config(conf=SparkConf())
    • .enableHiveSupport():开启Hive 支持。(spark 2.0 的新接口)

    • .master(master):设置spark master URL。如:

      • master=local:表示单机本地运行
      • master=local[4]:表示单机本地4核运行
      • master=spark://master:7077:表示在一个spark standalone cluster 上运行
    • .getOrCreate():返回一个已有的SparkSession 实例;如果没有则基于当前builder 的配置,创建一个新的SparkSession 实例

      • 该方法首先检测是否有一个有效的全局默认SparkSession 实例。如果有,则返回它;如果没有,则创建一个作为全局默认SparkSession实例,并返回它
      • 如果已有一个有效的全局默认SparkSession 实例,则当前builder的配置将应用到该实例上