如何处理pyspark中写入数据时的内存问题,其中特定列在数据库块中的每个记录中包含非常大的数据 &



我有一组包含10列的记录。有一个列'x',其中包含浮点值数组和数组的长度可以非常大(例如,数组的长度可以是25000000,50000000,80000000等)我试图读取数据并使用pyspark在azure数据库中使用id列上的分区写入delta,但它正在给出内存不足的问题。谁能建议一个优化方法来处理单个单元格内的大量数据?

您可以在实例化SparkContext之前使用SparkConf().setAll()类方法设置系统属性。

首先打开pyspark shell并检查设置:

sc.getConf().getAll()

你首先必须创建conf,然后你可以使用该配置对象创建Spark上下文。

config = pyspark.SparkConf().setAll([('spark.executor.memory', '8g'), ('spark.executor.cores', '3'), ('spark.cores.max', '3'), ('spark.driver.memory','8g')])
sc.stop()
sc = pyspark.SparkContext(conf=config)

您可以尝试更高的spark.executor.memory值,并检查哪个符合您的要求。

你也可以试试这个例子:

from pyspark import SparkContext
SparkContext.setSystemProperty('spark.executor.memory', '2g')
sc = SparkContext("local", "App Name")

最新更新