我将多个表读取到同一数据帧
i = 0
while (condition):
dfMoreData = sqlContext.read.parquet("data" + i + ".parquet")
# process dfMoreData
i = i + 1
我遇到关于内存不足的异常每次迭代后,我应该以及如何清除dfMoreData?
要修复未将不可变值分配给任何集合的代码,一种方法是使用regex或路径过滤器
sqlContext.read.parquet("data*.parquet");
使用unionAll 减少数据帧
val df = (1 to 10) // assuming filenames are 1 to 10
.map("data" + _ + ".parquet")
.map(sqlContext.read.parquet(_))
.reduce(_ unionAll _)
对于内存不足的错误,我认为集群需要有足够的内存来加载数据。之后,您可以尝试使用MEMORY_AND_DISK选项进行持久化,然后执行其余操作。