您從內存中獲取的主要原因是您正在從驅動程序機器生成隨機數據並將其並行化到其他機器。
final List<Integer> range = range(1000);
該行生成隨機的整數列表,這些整數在一臺機器的內存中存在。 (請注意,這是Java代碼,並且您沒有運行spark API來生成隨機數據) 這並不理想,因爲您想要的可能是生成的數據超過了單個機器的內存量。
所以你需要做的是告訴每個工人(奴隸)的火花節點自行生成隨機數據。
如果你只是想測試隨機數據, Spark mllib有很好的功能,你可以使用。 (下面的代碼是從mllib documentation複製)
import org.apache.spark.SparkContext;
import org.apache.spark.api.JavaDoubleRDD;
import static org.apache.spark.mllib.random.RandomRDDs.*;
JavaSparkContext jsc = ...
JavaDoubleRDD u = normalJavaRDD(jsc, 1000000L, 10);
輸出RDD現在包含有標準正態分佈產生百萬雙值被分配到10個parititons