1、使用spark-submit方式提交代码
 
注:由于通过Spark on yarn,使用该命令时候需要指定 --master
 
 
2、编写提交Yarn的wordcount程序
 
其中:standalon代码的区别: 没有conf配置信息,所有的配置和资源通过yarn来完成
 
package spark
 
 import org.apache.spark.SparkContext
 
 import org.apache.spark.SparkContext._
 
 /**
 
 * Spark on yarn 模式单词计数,并倒序排序
 
 * @author shenfl
 
 */
 
 object WordCountSparkOnYarn {
 
  
 
   def main(args: Array[String]): Unit = {
 
     if(args.length!=2){
 
       println("Usage: spark-submit --class spark.WordCountSparkOnYarn wordCount.jar inputpath outputpath ")
 
       System.exit(0);
 
     }
 
    
 
     val sc = new SparkContext;
 
     val files = sc.textFile(args(0));
 
    
 
     files.flatMap( (_.split("\t")) ).map( (_,1) ).reduceByKey(_ + _)
 
          .map( x => (x._2,x._1) ).sortByKey(false)
 
          .map( x =>(x._2,x._1))
 
          .repartition(1)
 
          .saveAsTextFile(args(1))
 
   }
 
 }
3、Spark on yarn 模式下运行
 
3.1 编译成jar包 testSpark-1.0-SNAPSHOT.jar
 
3.2 上传服务器并通过spark submit在yarn上运行
 
spark-submit --class spark.WordCountSparkOnYarn --master yarn-cluster testSpark-1.0-SNAPSHOT.jar wc.txt output3
 
 
注: wc.txt 的数据为:
 
 通过执行hdfs dfs -cat wc.txt命令,查看hdfs上数据为:
 
 hello   you
 
 hello   m
 
 
3.3 检查结果
 
 hdfs dfs -cat output4/part*
 
 (hello,2)
 
 (you,1)
 
 (me,1)
 
 
注意: 程序引入reduceByKey(_ + _) 出错是因为没有导入对应的包,例如:
 
import org.apache.spark.SparkContext
 
import org.apache.spark.SparkContext
 ._










