2016-02-20 70 views
3

我有一個MapReduce任務,我想從我的java代碼在Spark YARN集羣上運行。另外我想在我的java代碼中檢索reduce結果(字符串和數字對,元組)。例如:是否可以從代碼中運行spark yarn cluster?

// I know, it's wrong setMaster("YARN"), but just to describe what I want. 
// I want to execute job ob the cluster. 
SparkConf sparkConf = new SparkConf().setAppName("Test").setMaster("YARN"); 
JavaSparkContext sc = new JavaSparkContext(sparkConf); 

JavaRDD<Integer> input = sc.parallelize(list); 

// map 
JavaPairRDD<String, Integer> results = input.mapToPair(new MapToPairExample()); 

// reduce 
String max = results.max(new MyResultsComparator())._1(); 

如果我將master設置爲local,local []或spark:// master:7707,它將起作用。

所以問題是:我能以某種方式對紗線進行同樣的處理嗎?

+0

'.setMaster( 「絲簇」)#OR紗的客戶端'' ./spark-submit --master紗cluster' 您可以檢查'master:8088'上的狀態,然後點擊正在運行的應用程序的'Application master'。 – DanieleO

回答

0

你需要使用spark-submit來做到這一點。當你在本地模式下運行它作爲主要Java程序時,你的IDE正在照顧類路徑(因爲驅動程序/執行程序運行在同一個jvm中) 。

如果您希望驅動程序在您的機器上運行,您還可以使用"yarn-client"模式。

紗線羣集模式使用.setMaster("yarn-cluster")

相關問題