かなり小さいデータセットでもヒープスペースエラーが発生しています。私はシステムメモリを使い果たしていないことを確信できます。たとえば、約20Mの行と9の列を含むデータセットを考えてみましょう。これはディスク上で1GBを占有します。私は30GBのメモリを搭載したGoogle Computeノードでこれを試しています。sparklyrのヒープスペースがなくなりましたが、十分なメモリがあります
このデータは、df
というデータフレーム内にあるとします。以下は、ややゆっくりとはいえ、正常に動作します:
library(tidyverse)
uniques <- search_raw_lt %>%
group_by(my_key) %>%
summarise() %>%
ungroup()
次はjava.lang.OutOfMemoryError: Java heap space
をスローします。
library(tidyverse)
library(sparklyr)
sc <- spark_connect(master = "local")
df_tbl <- copy_to(sc, df)
unique_spark <- df_tbl %>%
group_by(my_key) %>%
summarise() %>%
ungroup() %>%
collect()
私はthis suggestionを試して、スパークのヒープスペースを増やしました。問題は解決しません。機械の状態をhtop
に見ると、総メモリ使用量は約10GBを超えることはありません。
library(tidyverse)
library(sparklyr)
config <- spark_config()
config[["sparklyr.shell.conf"]] <- "spark.driver.extraJavaOptions=-XX:MaxHeapSize=24G"
sc <- spark_connect(master = "local")
df_tbl <- copy_to(sc, df)
unique_spark <- df_tbl %>%
group_by(my_key) %>%
summarise() %>%
ungroup() %>%
collect()
は最後に、サンディープさんのコメントごとに、私は4G
からMaxHeapSize
を下げてみました。 (仮想ワーカー一人につきMaxHeapSize
かSparkのローカルインスタンス全体ですか?)まだヒープスペースエラーがあり、システムのメモリをあまり使用しませんでした。
は、MaxHeapSize = 4GB' 'に' MaxHeapSize = 24G'を減らす:すべて一緒にそれを置く、私は次のようにそれが動作するようになりました。 24 GBのメモリは必要ありません。これでも4GBでも十分です。 –
ありがとうございます。それでもエラーは発生します。私はこれに対処する質問のテキストを明確にした。 –
このジョブを実行するために使用しているspark submitコマンドも投稿できますか? –