我们说我有10个输入文件,每个文件大小为几GB,我试图将它们读入RDD并执行map / reduce操作。
显然,map
阶段必须等到所有10个文件都被完全加载。但是map
阶段可以更早开始吗?
换句话说,Spark是否会逐个创建每个分区,然后立即开始对该分区的数据运行map
操作......或者等待所有数据从所有10个数据完全加载文件,然后同时启动所有分区上的while read line; do
echo "$line" > inputFileInside.txt
./myprogram paramater1 inputFileInside.txt \
&& sudo sh -c \"sync; echo 3 > /proc/sys/vm/drop_caches\"
done < <(cat inputfile.txt)
操作?
答案 0 :(得分:0)
你有理由相信在开始任何转换之前火花正在等待所有文件加载到内存中吗?
Spark做了懒惰评估。因此,当您为其提供一组文件时,它将确定需要多少作业,并按顺序读取文件并转储输出。在开始处理之前,它不会尝试将整个文件加载到内存中。