spark2.2 SparkSession思考与总结1

问题导读 1.你认为为何出现SparkSession? 2.SparkSession如何创建RDD? 3.SparkSession通过那个类来实例化? 4.bulider包含哪些函数? 为何出现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

[Scala] 纯文本查看 复制代码

?

val sc=spark.sparkContext

[Scala] 纯文本查看 复制代码

?

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

[Scala] 纯文本查看 复制代码

?

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

[Scala] 纯文本查看 复制代码

?

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

[Scala] 纯文本查看 复制代码

?

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

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的实例化,我们则更加容易理解

[Scala] 纯文本查看 复制代码

?

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

原文发布于微信公众号 - about云(wwwaboutyuncom)

原文发表时间:2017-11-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏岑玉海

Spark源码系列(八)Spark Streaming实例分析

这一章要讲Spark Streaming,讲之前首先回顾下它的用法,具体用法请参照《Spark Streaming编程指南》。 Example代码分析 val ...

3377
来自专栏祝威廉

利用 Spark DataSource API 实现Rest数据源

先说下这个需求的来源。通常在一个流式计算的主流程里,会用到很多映射数据,譬如某某对照关系,而这些映射数据通常是通过HTTP接口暴露出来的,尤其是外部系统,你基本...

1622
来自专栏Jed的技术阶梯

Kafka 自定义分区器

(1) 如果键值为 null,并且使用了默认的分区器,那么记录将被随机地发送到主题内各个可用的分区上。分区器使用轮询(Round Robin)算法将消息均衡地分...

1792
来自专栏lzj_learn_note

阿里ARouter拦截器使用及源码解析(二)

关于ARouter基本跳转的用法以及源码解析在上篇文章阿里阿里ARouter使用及源码解析(一)已经有过分析,有不清楚的同学可以去看看。本篇文章主要是关于ARo...

2363
来自专栏Small Code

【Python】自动生成命令行工具 - fire 简介

Python 中用于生成命令行接口(Command Line Interfaces, CLIs)的工具已经有一些了,例如已经成为 Python 标准库的 arg...

4669
来自专栏大内老A

让我们的ASP.NET MVC应用可以单独维护验证消息

在项目开发中,我们会使用到很多的描述性文字,比如验证消息、错误消息和确认消息等,让这些文本消息具有可维护性具有重要的意义。虽然我们可以将它们存储于资源文件中,并...

1997
来自专栏null的专栏

Hive——巧用transform处理复杂的字符串问题

相比于Map-Reduce,Hive对数据的处理相对简单,但是Hive本身提供的函数,对于处理复杂的字符串问题,就显得不是很方便,此时,可以借助transfor...

4205
来自专栏AILearning

Apache Spark 2.2.0 中文文档 - Spark 编程指南 | ApacheCN

Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Data...

3076
来自专栏Java呓语

单元测试以及JUnit框架解析

我们都有个习惯,常常不乐意去写个简单的单元测试程序来验证自己的代码。对自己的程序一直非常有自信,或存在侥幸心理每次运行通过后就直接扔给测试组测试了。然而每次测试...

1362
来自专栏祝威廉

Structured Streaming如何实现Parquet存储目录按时间分区

StreamingPro现在支持以SQL脚本的形式写Structured Streaming流式程序了: mlsql-stream。不过期间遇到个问题,我希望按...

1381

扫码关注云+社区

领取腾讯云代金券