我正在尝试使用Spark过滤大型数据框架。作为熊猫数据框,它的内存范围约为70GB。
我能够使用熊猫加载和过滤这些数据,但是我必须更慢,因为我必须交换磁盘等。
但是,当我尝试使用pyspark执行此操作时,我会遇到Java的内存错误。
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()
编辑:因此,我的问题是如何在Spark会话上设置内存?我还能确定使用哪些值?目前我只是在猜测。
阅读评论后,我要在创建会话之前需要设置内存的问题,我做到了:
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的工作原理尚不熟悉。
如果有人有关于何时设置什么值的提示,请回答Bellow!:)