博客
关于我
SparkContext、SparkConf和SparkSession的初始化
阅读量:798 次
发布时间:2023-04-02

本文共 1613 字,大约阅读时间需要 5 分钟。

SparkContext 和 SparkConf: 基本配置与使用说明

在 Apache Spark 中,任何程序的执行都必须从 SparkContext 开始。SparkContext 的初始化需要一个 SparkConf 对象,该对象包含了 Spark 集群的各种配置参数。通过 SparkConf,我们可以指定集群的 master 地址、应用名称等关键信息,从而为 SparkContext 的运行提供必要的环境配置。

创建 SparkContext

常见的 SparkConf 初始化方式如下:

val conf = new SparkConf().setMaster("master").setAppName("appName")val sc = new SparkContext(conf)

或者更简洁地:

val sc = new SparkContext("master", "appName")

需要注意的是,一旦 SparkConf 对象被传递给 Spark,就会被克隆,用户无法再对其进行修改。这意味着 SparkConf 的设置必须在初始化时就已经完成。

SparkConf 的注意事项

  • 单元测试优化:在单元测试中,可以通过调用 SparkConf(false) 来跳过外部设置,获取相同的配置。

  • setMaster 和 setAppName 的作用

    • setMaster("master") 用于指定 SparkContext 的 master 地址。
    • setAppName("appName") 用于设置应用程序的显示名称。
    • 这些方法背后的共同逻辑是调用 set 函数来修改配置参数。
  • ConcurrentHashMap 的内部机制:SparkConf 使用了 ConcurrentHashMap 来存储配置参数。该数据结构采用锁分段技术,通过将数据分成多个段,每个段配有一把锁,从而在高并发环境下提高访问效率。

  • SparkSession 的创建与使用

    SparkSession 是 SQLContext 和 HiveContext 的综合体现,其核心功能是支持 Structured Data 的处理。以下是创建 SparkSession 的示例:

    val sparkSession = SparkSession.builder  .master("master")  .appName("appName")  .getOrCreate()

    或者如果需要启用 Hive 支持:

    val sparkSession = SparkSession.builder  .master("master")  .appName("appName")  .enableHiveSupport()  .getOrCreate()

    getOrCreate() 的作用

    getOrCreate() 方法具有懒初始化的特点:如果已经有一个 SparkSession 存在,则直接返回它;如果不存在,则创建一个新的。这在多次初始化时非常有用。

    代码示例

    以下是关于 SparkConf 的简单使用示例:

    val conf = new SparkConf()conf.set("k1", "v1")val s1 = SparkSession.builder.config(conf).getOrCreate()val s2 = SparkSession.builder.config("k2", "v2").getOrCreate()return s1.conf.get("k1") == s2.conf.get("k2")

    返回值为 true,这表明两个 SparkSession 的配置参数是相同的。

    通过以上方法,我们可以轻松地配置并使用 SparkContext 和 SparkSession,充分发挥其强大功能。

    转载地址:http://ylefk.baihongyu.com/

    你可能感兴趣的文章
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    查看>>
    org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded
    查看>>
    org.tinygroup.serviceprocessor-服务处理器
    查看>>
    org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
    查看>>
    org/hibernate/validator/internal/engine
    查看>>
    Orleans框架------基于Actor模型生成分布式Id
    查看>>
    SQL-36 创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。
    查看>>
    ORM sqlachemy学习
    查看>>
    Ormlite数据库
    查看>>
    orm总结
    查看>>
    os.environ 没有设置环境变量
    查看>>
    os.path.join、dirname、splitext、split、makedirs、getcwd、listdir、sep等的用法
    查看>>
    os.removexattr 的 Python 文档——‘*‘(星号)参数是什么意思?
    查看>>
    os.system 在 Python 中不起作用
    查看>>
    OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
    查看>>
    OSCACHE介绍
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
    查看>>
    SQL--mysql索引
    查看>>
    OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
    查看>>