在 SparkSession 上设置 Spark.driver.memory

use*_*158 6 apache-spark apache-spark-mllib

尝试一些 mllib JAVA API 来运行我的一些回归作业。

我有一个大数据集,导致 Spark 出现堆栈溢出错误。经过研究我发现

spark.driver.memory
Run Code Online (Sandbox Code Playgroud)

需要设置以获得额外的堆空间。我还得到了我无法将其设置为的一部分

SparkSession.builder().config
Run Code Online (Sandbox Code Playgroud)

到那时 JVM 就被创建了。所以我使用spark-shell来创建SparkSession。

驱动内存设置现在没问题

Spark Properties
Name    Value
spark.app.id    local-1475122816668
spark.app.name  Spark shell
spark.driver.host   10.60.10.234
spark.driver.memory 5g
spark.driver.port   58070
spark.executor.id   driver
spark.executor.memory   5g
spark.home  C:\spark-2.0.0-bin-hadoop2.7\bin\..
Run Code Online (Sandbox Code Playgroud)

现在我正期待着

SparkSession.builder().getOrCreate()
Run Code Online (Sandbox Code Playgroud)

根据文档在 eclipse 上返回相同的会话

https://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/SparkSession.html

但出现错误

org.apache.spark.SparkException: A master URL must be set in your configuration
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:371)
    at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2256)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:831)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:823)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:823)
Run Code Online (Sandbox Code Playgroud)

如果我在java代码上添加master

SparkSession spark = SparkSession.builder().getOrCreate()
  .builder()      
  .master("local[2]")      
  .getOrCreate();
Run Code Online (Sandbox Code Playgroud)

它正在创建默认内存 1g 的新会话。

我如何在整个上下文中设置驱动程序内存,任何指针都将受到高度赞赏。