gpt4 book ai didi

scala - 使用spark-shell时使用sparkConf.set(..)自定义SparkContext

转载 作者:行者123 更新时间:2023-12-03 13:18:48 27 4
gpt4 key购买 nike

在Spark中,有3种主要方法来指定用于创建SparkConfSparkContext的选项:

  • 作为conf / spark-defaults.conf中的属性
  • 例如,该行:spark.driver.memory 4g
  • 作为args到spark-shell或spark-submit
  • ,例如spark-shell --driver-memory 4g ...
  • 在您的源代码中,请先配置SparkConf实例,然后再使用它创建SparkContext:
  • ,例如sparkConf.set( "spark.driver.memory", "4g" )

  • 但是,当使用 spark-shell时,在您得到shell提示时,已经在名为 sc的变量中为您创建了SparkContext。使用spark-shell时,如果在有机会执行任何Scala语句之前已经创建了SparkContext,则如何使用上面列表中的选项#3设置配置选项?

    特别是,我尝试使用Kyro序列化和GraphX。在GraphX上使用Kryo的规定方式是在自定义 SparkConf实例时执行以下Scala语句:
    GraphXUtils.registerKryoClasses( sparkConf )

    运行 spark-shell时如何完成此操作?

    最佳答案

    Spark 2.0+
    您应该能够使用SparkSession.conf.set方法在运行时设置一些配置选项,但是它主要限于SQL配置。
    Spark <2.0
    您可以简单地停止现有上下文并创建一个新上下文:

    import org.apache.spark.{SparkContext, SparkConf}

    sc.stop()
    val conf = new SparkConf().set("spark.executor.memory", "4g")
    val sc = new SparkContext(conf)
    正如您在 official documentation中可以看到的:

    Once a SparkConf object is passed to Spark, it is cloned and can no longer be modified by the user. Spark does not support modifying the configuration at runtime.


    因此,您可以看到停止上下文是启动Shell后唯一适用的选项。
    您始终可以使用配置文件或 --confspark-shell参数来设置所需的参数,这些参数将用作默认上下文。如果是Kryo,您应该看一下:
  • spark.kryo.classesToRegister
  • spark.kryo.registrator

  • 请参阅 Compression and Serialization中的 Spark Configuration

    关于scala - 使用spark-shell时使用sparkConf.set(..)自定义SparkContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31397731/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com