概要
spark-submitした際にコンソールやweb ui、ログなどに表示されるプログレス表示。
↑ こういうやつ
標準出力をログに落としていたらこれのせいでログサイズがデカくなり過ぎたので、更新頻度を調整してみる。
バージョン情報
- Spark 2.4.3
progress周りで設定できるconf
name | default | description |
---|---|---|
spark.ui.showConsoleProgress | true | progress表示の有無 |
spark.ui.consoleProgress.update.interval | 200 | progress表示の更新頻度 |
検証用コード
ランダムでsleepしてprogressの振る舞いをじっくり確認する余裕があるような処理。
import pandas as pd import numpy as np # 100行のレコード生成 pandas_df = pd.DataFrame( np.random.randint(0, 100, (100, 1)), columns=['foo']) # sparkのDataFrameに変換 df = spark.createDataFrame(pandas_df) # sleepしてから値を返す処理 import time def map_func(row): time.sleep(np.random.random() * 2) dic = row.asDict() dic['foo'] += 1 return pyspark.sql.types.Row(**dic) # partition print( df.repartition(100).rdd.map(map_func).collect() )
spark.ui.consoleProgress.update.interval
progressの更新間隔を決める。
デフォルトは200ミリ秒。進捗は出て欲しいけど200ミリ秒ごとだと頻繁過ぎる場合は適度に値を調整する。
下記は10秒間隔(10000)を設定した場合。
spark-submit \ --master yarn \ --conf spark.ui.consoleProgress.update.interval=10000 \ --conf spark.dynamicAllocation.maxExecutors=10 \ example.py
これで10秒に1度進捗がrefreshされるようになる。
個人的に長時間かかる処理を実行する場合は分単位の時間を設定して使っている。
spark.ui.showConsoleProgress
progressの表示の有無を決める。
falseを指定して実行するとprogressの表示が消える。
spark-submit \ --master yarn \ --conf spark.ui.showConsoleProgress=false \ --conf spark.dynamicAllocation.maxExecutors=10 \ example.py
これで何も表示されずに処理が進む。
改定履歴
Author: Masato Watanabe, Date: 2019-08-02, 記事投稿