我有下一个代码,我在那里重新分区过滤输入数据并保留它:
val df = sparkSession.sqlContext.read
.parquet(path)
.as[struct1]
.filter(dateRange(_,lowerBound,upperBound))
.repartition(nrInputPartitions)
.persist()
df.count
我希望所有数据都存储在内存中,但我在Spark UI中得到以下内容:
存储
Size in Memory 424.2 GB Size on Disk 44.1 GB
是因为某些分区没有足够的内存,而Spark会自动切换到MEMORY_AND_DISK
存储级别吗?
答案 0 :(得分:1)
是因为某些分区没有足够的内存,而Spark会自动切换到MEMORY_AND_DISK存储级别吗?
几乎。这是因为它不是RDD
,而是Dataset
,Datasets
的默认存储级别是MEMORY_AND_DISK
。否则你的怀疑是真的 - 如果没有足够的内存或缓存需要数据进入磁盘(但从技术上讲,它不是aspill)。