spark2.2 SparkSession思考与总结1

简介: spark2.2 SparkSession思考与总结1

为何出现SparkSession


对于spark1.x的版本,我们最常用的是rdd,如果我们想使用DataFrame,则需要通过rdd转换。随着dataframe和dataset使用的越来越多,所以spark就寻找了新的切入点--SparkSession。如果rdd使用SparkContext,DateFrame和DataSet使用SparkSession,然后还有SQLContext和HiveContext,想必太麻烦了。所以官网用SparkSession封装了SQLContext和HiveContext。然而在2.2版本中,StreamingContext还是单独存在的。所以我们在使用SparkStreaming,还必须使用StreamingContext来作为入口。

SparkSession如何创建RDD


这里如果你思考的话,可能会想,spark2是否还支持rdd。当然还是支持的。

这里以下面为例:

我们进入spark-shell,通过SparkSession获取sparkContext


val sc=spark.sparkContext

6240d819a2fd46d6a5a24924ee4074f8.jpg

sc.makeRDD(List(1,2,3,4,5))

val rddlist=sc.makeRDD(List(1,2,3,4,5))

val rl=rddlist.map(x=>x*x)

println(rl.collect.mkString(","))
1,4,9,16,25

1d559400b36eacd7af4b64be262f949e.jpg

SparkSession如何实例化


通过静态类Builder来实例化。

Builder又有很多方法,包括:

1.appName函数

1.appName(String name)用来设置应用程序名字,会显示在Spark web UI中

值类型:SparkSession.Builder

2.config函数

这里有很多重载函数。其实从这里我们可以看出重载函数,是针对不同的情况,使用不同的函数,但是他们的功能都是用来设置配置项的。

1.config(SparkConf conf)

根据给定的SparkConf设置配置选项列表。

2.config(String key, boolean value)

设置配置项,针对值为boolean的

3.config(String key, double value)

设置配置项,针对值为double的

4.config(String key, long value)

设置配置项,针对值为long 的

5.config(String key, String value)设置配置项,针对值为String 的

值类型:SparkSession.Builder

3.enableHiveSupport函数

表示支持Hive,包括 链接持久化Hive metastore, 支持Hive serdes, 和Hive用户自定义函数

值类型:SparkSession.Builder

4.getOrCreate函数

getOrCreate()

获取已经得到的 SparkSession,或则如果不存在则创建一个新的基于builder选项的SparkSession

值类型:SparkSession

5.master函数

master(String master)

设置Spark master URL 连接,比如"local" 设置本地运行,"local[4]"本地运行4cores,或则"spark://master:7077"运行在spark standalone 集群。

值类型:SparkSession.Builder

6.withExtensions函数

withExtensions(scala.Function1<SparkSessionExtensions,scala.runtime.BoxedUnit> f)这允许用户添加Analyzer rules, Optimizer rules, Planning Strategies 或则customized parser.这一函数我们是不常见的。

值类型:SparkSession.Builder

了解了上面函数,对于官网提供的SparkSession的实例化,我们则更加容易理解

SparkSession.builder
    .master("local")
    .appName("Word Count")
    .config("spark.some.config.option", "some-value")
    .getOrCreate()

目录
相关文章
|
SQL 机器学习/深度学习 分布式计算
Spark5:SparkSQL
Spark5:SparkSQL
107 0
|
2月前
|
SQL 机器学习/深度学习 分布式计算
Spark适合处理哪些任务?
【9月更文挑战第1天】Spark适合处理哪些任务?
168 3
|
2月前
|
SQL 分布式计算 Hadoop
初识 Spark
【9月更文挑战第1天】. 初识 Spark
55 2
|
6月前
|
SQL 分布式计算 API
深入了解sparkSession
深入了解sparkSession
191 0
|
消息中间件 分布式计算 监控
Spark6:Spark Steaming
Spark6:Spark Steaming
64 0
|
SQL 存储 缓存
让你真正理解什么是SparkContext, SQLContext 和HiveContext
让你真正理解什么是SparkContext, SQLContext 和HiveContext
306 0
让你真正理解什么是SparkContext, SQLContext 和HiveContext
|
SQL 缓存 分布式计算
spark2的SparkSession思考与总结2:SparkSession有哪些函数及作用是什么
spark2的SparkSession思考与总结2:SparkSession有哪些函数及作用是什么
286 0
|
SQL 机器学习/深度学习 分布式计算
【Spark】(一)初识 Spark
【Spark】(一)初识 Spark
167 0
【Spark】(一)初识 Spark
|
存储 机器学习/深度学习 缓存
五分钟零基础介绍 spark
相信大家都听说过火的不能再火、炒得不能再炒的新一代大数据处理框架 Spark. 那么 Spark 是何方神圣?为何大有取代 Hadoop 的势头?Spark 内部又是如何工作的呢?我们会用几篇文章为大家一一介绍。 Hadoop:我不想知道我是怎么来的,我就想知道我是怎么没的? 还是从 Hadoop 处理海量数据的架构说起,一个 Hadoop job 通常都是这样的: 从 HDFS 读取输入数据; 在 Map 阶段使用用户定义的 mapper function, 然后把结果写入磁盘; 在 Reduce 阶段,从各个处于 Map 阶段的机器中读取 Map 计算的中间结果,使用用户定义的 r
137 0
|
分布式计算 Kubernetes Spark
Spark on k8s
前言 Spark 自从2.3版本以来就支持运行在k8s上,本文主要介绍如何运行Spark在阿里云容器服务-Kubernetes。 前提条件 1、 已经购买阿里云容器服务-Kubernetes。购买链接:Kubernetes控制台。
3063 0