如何在spark-shell中设置spark.akka.frameSize?

时间:2014-11-30 16:16:04

标签: apache-spark

对于特定的 spark shell 会话,我正在尝试

spark-shell -Dspark.akka.frameSize=10000 --executor-memory 4g

在shell中,我明白了:

System.getProperty("spark.executor.memory")
res0: String = 4g
System.getProperty("spark.akka.frameSize")
res1: String = null

可能是这个字符串不正确,但在尝试对我的数据集执行take()时出现frameSize错误。

org.apache.spark.SparkException: Job aborted due to stage failure: Serialized task 6:0 was 12518780 bytes which exceeds spark.akka.frameSize (10485760 bytes). Consider using broadcast variables for large values.

这显示默认10M的frameSize。也许我的语法错了。请帮忙。谢谢!

2 个答案:

答案 0 :(得分:5)

Dynamically Loading Spark Properties下的Spark配置指南中记录了这一点:

  

Spark shell和spark-submit工具支持两种动态加载配置的方法。第一个是命令行选项,例如--master,如上所示。 spark-submit可以使用--conf标志接受任何Spark属性,但对启动Spark应用程序起作用的属性使用特殊标志。

例如:

./bin/spark-submit --name "My app" --master local[4] --conf spark.akka.frameSize=100 --conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" myApp.jar 

答案 1 :(得分:2)

此语法在spark shell中起作用:

spark-shell  --executor-memory 4g --driver-java-options "-Dspark.akka.frameSize=100"

这在Spark文档中非常明显。显然,这还需要做很多工作。

这是1.0.1。 Josh的回答似乎适用于1.1.0 +