我正在使用anaconda python并在其上安装了pyspark。在pyspark程序中,我使用数据帧作为数据结构。该计划如下:
from pyspark.sql import SparkSession
spark_session = SparkSession.builder.appName("test").getOrCreate()
sdf = spark_session.read.orc("../data/")
sdf.createOrReplaceTempView("data")
df = spark_session.sql("select field1, field2 from data group by field1")
df.write.csv("result.csv")
虽然这有效,但速度很慢,内存使用率非常低(~2GB)。安装了更多的物理内存。
我尝试通过以下方式增加内存使用量:
from pyspark import SparkContext
SparkContext.setSystemProperty('spark.executor.memory', '16g')
但它似乎没有任何帮助。
有什么方法可以加快程序的速度?特别是如何充分利用系统内存?
谢谢!
答案 0 :(得分:1)
您可以使用会话配置:
conf = SparkConf()
conf.set(spark.executor.memory', '16g')
spark_session = SparkSession.builder \
.config(conf=conf) \
.appName('test') \
.getOrCreate()
或者使用spark-submit
运行脚本:
spark-sumbit --conf spark.executor.memory=16g yourscript.py
您还应该将spark.driver.memory
设置为合理的。
希望这有帮助,祝你好运!