DatabricksでsparkのデータフレームをtoPandas()
でpandasのデータフレームに変換しようとした際に以下のようなエラーに遭遇しました。
<エラーメッセージ>
Caused by: org.apache.spark.sql.execution.OutOfMemorySparkException: Size of broadcasted table far exceeds estimates and exceeds limit of spark.driver.maxResultSize=4294967296.
関連記事:Pyspark3.0用の集計・前処理サンプルコードまとめ
関連記事:pandasからsparkデータフレームへの変換時に 「Can not merge type error」のエラーが出た時の対策
現在の設定を確認する
まず以下のコードで現在の設定が取得できます
# 現在の設定を取得する spark.conf.get("spark.driver.maxResultSize")
設定を変更する
例えばtoPandas()で生成するpandasデータフレームのサイズ上限を8GBに引き上げたい場合は以下のように記述します。
# 設定を変更する spark.conf.set("spark.driver.maxResultSize",value='8g')
ちなみにDatabricksとかだと上記コードを実行した際に以下のようなエラーが出るときもあります
databricks cannot modify the value of a spark config spark.driver.maxresultsize
この場合はこちら側でクラスターの設定を変更する権限がないので管理者に連絡するしかないです
参照:https://stackoverflow.com/questions/72653169/cannot-modify-the-value-of-a-spark-config-spark-executor-instances
コメント
[…] 参考:【Pyspark】Spark.driverのメモリ上限設定を変更する方法 […]