Dataframe pyspark内存消耗非常低
我正在使用anaconda python,并在其上安装了pyspark。在pyspark程序中,我使用dataframe作为数据结构。程序如下所示:Dataframe pyspark内存消耗非常低,dataframe,pyspark,Dataframe,Pyspark,我正在使用anaconda python,并在其上安装了pyspark。在pyspark程序中,我使用dataframe作为数据结构。程序如下所示: from pyspark.sql import SparkSession spark_session = SparkSession.builder.appName("test").getOrCreate() sdf = spark_session.read.orc("../data/") sdf.createOrReplaceTempView("
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')
但这似乎毫无帮助
有什么方法可以加速这个计划吗?特别是如何充分利用系统内存
谢谢 您可以为会话使用配置:
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
设置为合理的值
希望这有帮助,祝你好运 我认为你的代码有问题。您使用的分组方式没有聚合函数。如果有多行具有相同的field1值,这将给您错误的答案。谢谢,这只是为了演示这个问题。实际查询要复杂得多。谢谢你的建议。作为一个新手,我发现我实际上是在本地模式下运行它,所以设置spark.driver.memory对我来说很有用。谢谢!我很高兴我帮了忙:)