ℕʘʘ*_*ḆḽḘ 8 r apache-spark pyspark sparklyr
我java.io.IOException: No space left on device在运行一个简单的查询后得到了这个sparklyr.我使用最后版本的Spark(2.1.1)和Sparklyr
df_new <-spark_read_parquet(sc, "/mypath/parquet_*", name = "df_new", memory = FALSE)
myquery <- df_new %>% group_by(text) %>% summarize(mycount = n()) %>%
arrange(desc(mycount)) %>% head(10)
#this FAILS
get_result <- collect(myquery)
Run Code Online (Sandbox Code Playgroud)
我确实设置了两个
spark.local.dir <- "/mypath/"spark.worker.dir <- "/mypath/"使用平常
config <- spark_config()
config$`spark.executor.memory` <- "100GB"
config$`spark.executor.cores` <- "3"
config$`spark.local.dir` <- "/mypath/"
config$`spark.worker.dir` <- "mypath/"
config$`spark.cores.max`<- "2000"
config$`spark.default.parallelism`<- "4"
config$`spark.total-executor-cores`<- "80"
config$`sparklyr.shell.driver-memory` <- "100G"
config$`sparklyr.shell.executor-memory` <- "100G"
config$`spark.yarn.executor.memoryOverhead` <- "100G"
config$`sparklyr.shell.num-executors` <- "90"
config$`spark.memory.fraction` <- "0.2"
Sys.setenv(SPARK_HOME="mysparkpath")
sc <- spark_connect(master = "spark://mynode", config = config)
Run Code Online (Sandbox Code Playgroud)
哪里mypath有超过5TB的磁盘空间(我可以在Environment选项卡中看到这些选项).我尝试了类似的命令Pyspark,它以同样的方式失败(同样的错误).
通过在寻找 Stages的选项卡Spark,我看到,当发生错误shuffle write约60 GB.(输入是关于200GB).鉴于我有足够的空间,这令人费解.我已经看过其他SO解决方案......
集群作业以magpie https://github.com/LLNL/magpie/blob/master/submission-scripts/script-sbatch-srun/magpie.sbatch-srun-spark 开始
每次我启动Spark作业时,都会看到spark-abcd-random_numbers在我的/mypath文件夹中调用的目录.但那里的文件大小非常小(远不及60GB shuffle写入)
700K(原始csv文件是100GB)它们基本上包含字符串.这里有什么问题?谢谢!!
我以前多次遇到这个问题.背后的原因是临时文件.大多数服务器都有一个非常小的分区,/tmp/它是spark的默认临时目录.
通常,我曾经通过在spark-submit命令中设置如下来改变它:
$spark-submit --master local[*] --conf "spark.driver.extraJavaOptions=-Djava.io.tmpdir=/mypath/" ....
Run Code Online (Sandbox Code Playgroud)
在你的情况下,我认为你可以提供R中的配置如下(我没有测试过,但应该工作):
config$`spark.driver.extraJavaOptions` <- "-Djava.io.tmpdir=/mypath/"
config$`spark.executor.extraJavaOptions ` <- "-Djava.io.tmpdir=/mypath/"
Run Code Online (Sandbox Code Playgroud)
请注意,您必须为驱动程序和执行程序更改它,因为您正在使用Spark独立主服务器(我在您的问题中可以看到)
我希望这会有所帮助
设置参数后,您可以在 Spark 环境 UI 中看到 Spark.local.dir 的新值。但它没有反映。
即使我也遇到了类似的问题。设置好这个参数后,我重新启动机器,然后开始工作。
| 归档时间: |
|
| 查看次数: |
2846 次 |
| 最近记录: |