(什麼是Scala中應該儘可能在Java中是不可能的,對不對?但我會採取斯卡拉的建議爲好)構建星火JavaRDD列表從DropResult對象
我不是要遍歷一個RDD,而是我需要用稱爲DropResult的類型的隨機/模擬器類中的n個元素構建一個。 DropResult不能被轉換成其他任何東西。
我以爲Spark「find PI」的例子讓我走上正軌,但沒有運氣。這裏就是我想:
在一次性基礎上DropResult作出這樣的: 使從PLD單DropResult(PipeLinkageData)
DropResult dropResultSeed = pld.doDrop();
我想是這樣的:
JavaRDD<DropResult> simCountRDD = spark.parallelize(makeRangeList(1, getSimCount())).foreach(pld.doDrop());
我只需要在集羣上運行pld.doDrop()大約10^6次,並將結果放入Spark RDD中,以便在集羣上執行下一個操作。我無法弄清楚使用「並行化」來完成這項工作的功能。
makeRangeList:
private List<Integer> makeRangeList(int lower, int upper) {
List<Integer> range = IntStream.range(lower, upper).boxed().collect(Collectors.toList());
return range;
}
(FWIW我試圖用從http://spark.apache.org/examples.html爲如何做一個for循環創建JavaRDD模型郫縣爲例)
int count = spark.parallelize(makeRange(1, NUM_SAMPLES)).filter(new Function<Integer, Boolean>() {
public Boolean call(Integer i) {
double x = Math.random();
double y = Math.random();
return x*x + y*y < 1;
}
}).count();
System.out.println("Pi is roughly " + 4 * count/NUM_SAMPLES);
問題關鍵是,我們試圖並行首先填充RDD的過程中,我們無法在一臺機器上運行這麼多計算,因爲它們每個都需要大約六秒。感謝任何想法,Spark必須能夠做到這一點? – JimLohse