前言
最近在学习Spark时,首先遇到了SparkSession,功能挺强大的,集大成者。
Apache Spark 2.0引入了SparkSession,其为用户提供了一个统一的切入点来使用Spark的各项功能,并且允许用户通过它调用DataFrame和Dataset相关API来编写Spark程序。
简介
- SparkSession 主要用在 sparkSQL 中,当然也可以用在其他场合,他可以代替 SparkContext;
- SparkSession 实际上封装了 SparkContext,另外也封装了 SparkConf、sqlContext,随着版本增加,可能更多
- 我们尽量使用 SparkSession ,如果发现有些 API 不在 SparkSession 中,也可以通过 SparkSession 拿到 SparkContext 和其他 Context 等
方法介绍
SparkSession 通过静态类Builder来实例化。
object SparkSessionExample{
def main(args: Array[String]){
val spark = SparkSession
.builder()
.appName("parquet")
.config("spark.yarn.maxAppAttempts", 1)
.enableHiveSupport()
.getOrCreate()
.master("local[*]")
val df = sparkSession.read.option("header","true").csv("src/sales.csv")
df.show()
}
}
Builder
包含一些方法
- appName(String name)
用来设置应用程序名字,会显示在Spark web UI中,自己起名就行 - config函数
重载函数,是针对不同的情况,使用不同的函数,但是他们的功能都是用来设置配置项的。- config(SparkConf conf)
根据给定的SparkConf设置配置选项列表。 - config(String key, boolean value)
设置配置项,针对值为boolean的 - config(String key, double value)
设置配置项,针对值为double的 - config(String key, long value)
设置配置项,针对值为long 的 - config(String key, String value)
设置配置项,针对值为String 的
- config(SparkConf conf)
- enableHiveSupport函数
表示支持Hive,包括 链接持久化Hive metastore, 支持Hive serdes, 和Hive用户自定义函数 - getOrCreate()
获取已经得到的 SparkSession,或则如果不存在则创建一个新的基于builder选项的SparkSession - master(String master)
设置Spark master URL 连接,比如"local" 设置本地运行,"local[3]"本地运行3 cores,或则"spark://master:7007"运行在spark standalone 集群。 - withExtensions(scala.Function1<SparkSessionExtensions,scala.runtime.BoxedUnit> f)
这允许用户添加Analyzer rules, Optimizer rules, Planning Strategies 或则customized parser.这一函不常见的。