2017-12-06 21 views
0

大きなデータフレームをフィルタリングするためにsparkを使用しようとしています。パンダのデータフレームとしては、約70GBのメモリがあります。私は何をしていてもメモリを消耗します

私はディスクにスワップする必要があるので、私はしかし、本当にゆっくりと、パンダを使用してこのデータをロードし、フィルタリングすることができる午前など

しかし、私は、私はJavaからメモリエラーに遭遇PySparkを使用してこれをやってみたとき。

from pyspark.sql import SparkSession 
spark = SparkSession.builder.appName("Master").getOrCreate() 
master = spark.read.csv(master_path, inferSchema=True, schema=schema, header=True) 

master_desember = spark.sql("SELECT * FROM master_filter_ready WHERE born_month='12'") 
master_desember = master_desember.toPandas() 

編集:だから私の質問は、私はそれを作成する前に、私は火花セッションでメモリを設定するのですかですか?どのように使用する値を決定することができますか?現時点では私はちょうど推測しています。コメントは、私はこれをしなかったセッションを作成する前にメモリを設定する必要についての私の質問に怒鳴る読んだ後

答えて

0

from pyspark.sql import SparkSession 

builder = SparkSession.builder 
builder = builder.config("spark.executor.memory", "2G") 
builder = builder.config("spark.driver.memory", "10G") 
builder = builder.config("spark.driver.maxResultSize", "5G") 
spark = builder.appName("Master").getOrCreate() 

これは私の問題を解決しました。しかし、SparkとPySparkがどのように動作するかについては、私がまだよく知っているわけではないので、これらの値がどのように機能するのかよくわかりません。

どこの値を設定するかについてのヒントがある場合は、以下のように答えてください。 :)