我有一種情況,我需要某些在Spark庫版本1.1.0中可用的功能,但是我有兩個不同的平臺需要運行這個應用程序。一個使用Spark 1.1.0,另一個使用Spark 0.9.1。 Spark 1.1.1中提供的功能在Spark 0.9.1中不可用。是否有可能在scala中有編譯器特定的代碼段
也就是說,是否可以在scala代碼中包含一些編譯器標誌,以便在使用Spark 1.1.0進行編譯時編譯某些代碼並在使用Spark 0.9.1進行編譯時使用。庫的另一部分代碼被編譯?
像這樣:
#ifSpark1.1.0
val docIdtoSeq: RDD[(String, Long)] = listOfDocIds.zipWithIndex()
#endifSpark1.1.0
#ifSpark0.9.1
val docIdtoSeq: RDD[(String, Long)] = listOfDocIds.mapPartitionsWithIndex{case(partId,it) => it.zipWithIndex.map{case(el,ind) => (el,ind+partId*constantLong)}}
#endifSpark0.9.1
非常感謝
我強烈建議使用星火1.0及以上的新開工項目(除非這不是由於外部約束的選件);從Spark 1.0開始,Spark爲其公共API提供了強大的二進制兼容性保證,所以1.0到1.1.0等都不會有這些問題。 – 2014-10-21 05:36:19