Sparkのヒープサイズを設定または取得する方法(Pythonノートブック経由)


7

Macbook ProでIPython NotebookのSpark(1.5.1)を使用しています。SparkとAnacondaをインストールした後、ターミナルからIPythonを起動しますIPYTHON_OPTS="notebook" pyspark。これにより、すべてのIPythonノートブックを一覧表示するWebページが開きます。それらの1つを選択して、2番目のWebページで開くことができます。SparkContext(sc)はすでに使用可能で、ノートブックの最初のコマンドはでhelp(sc)、正常に実行されます。私が抱えている問題は、対処方法がわからないJavaヒープスペースエラーが発生することです。現在のJavaヒープ設定を表示する方法と、セットアップのコンテキスト内でそれを増やす方法 次のエラーメッセージが表示されます。

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 19 in stage 247.0 failed 1 times, most recent failure: Lost task 19.0 in stage 247.0 (TID 953, localhost): java.lang.OutOfMemoryError: Java heap space

いつエラーが発生しますか?何をしようとしていますか?
eliasah

LabeledPointのRDDを作成します。特に大きなものではありません。100Kの観測x2Kの特徴ベクトルです。
カイ

回答:


17

プログラムで(APIを使用して)Sparkのメモリ制限を管理できます。

SparkContextはすでにノートブックで利用できるので:

sc._conf.get('spark.driver.memory')

設定することもできますが、最初に既存のSparkContextをシャットダウンする必要があります。

conf = SparkConf().setAppName("App")
conf = (conf.setMaster('local[*]')
        .set('spark.executor.memory', '4G')
        .set('spark.driver.memory', '45G')
        .set('spark.driver.maxResultSize', '10G'))
sc = SparkContext(conf=conf)

ワークロードがすべての分析で同じである場合は、上記で引用したspark-defaults.confを編集するのが適切です。


6

spark-defaults.confファイルを作成しapache-spark/1.5.1/libexec/conf/、それに次の行を追加することで解決しました。 spark.driver.memory 14g

それで私の問題は解決しました。しかし、その後、別の問題に遭遇しましたexceeding max result size of 1024MB。解決策は、上記のファイルに別の行を追加することでした: spark.driver.maxResultSize 2g


14gはたくさんありませんか??? ビッグデータではありませんが、実際には大量です。
エリアサ

すばらしい答えであり、私にとってはそれでうまくいきました。ありがとう。
Francesco Boi

1

configSparkSessionを設定するときにオプションを使用するだけです(2.4以降)。

MAX_MEMORY = "5g"

spark = SparkSession \
    .builder \
    .appName("Foo") \
    .config("spark.executor.memory", MAX_MEMORY) \
    .config("spark.driver.memory", MAX_MEMORY) \
    .getOrCreate()

エラーが表示されます:このSparkContextは既存のものである可能性があります。
アラッシュ

コードを追加するのではなく、このコードに置き換えるだけです。メッセージは、すでに1つのセッションを作成していると述べています
LaSul
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.