对于特定的 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。也许我的语法错了。请帮忙。谢谢!
答案 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 +