spark入门WordCount代码解读

WordCount代码解读

本地运行
object WordCount extends App {
    //setMaster:指定spark的运行模式,这里指定为本地运行
    //local[1]:指定线程数
    val conf = new SparkConf().setMaster("local[1]").setAppName("WC")
    
    //创建SparkContext,该对象是提交spark App的入口
    val sc = new SparkContext(conf)
    
    //使用sc创建RDD并执行相应的transformation和action
    sc.textFile("F:\\test\\words.txt")
        .flatMap(_.split(" "))
        .map((_, 1))
        .reduceByKey(_ + _)
        //指定结果的输出目录,目录不能存在
        .saveAsTextFile("F:\\test\\output")

    //停止sc,结束该任务
    sc.stop()
}

words.txt 内容:

hello world
world hello

远程运行

通过IDEA进行远程连接linux,以Standalone模式运行,主要是将IDEA作为Driver来提交应用程序,
配置过程如下:
修改sparkConf,添加最终需要运行的Jar包、Driver程序的地址,并设置Master的提交地址:

object WordCount {
    def main(args: Array[String]): Unit = {
        //创建SparkConf()并设置App名称
        val conf = new SparkConf()
            //指定master的地址
            .setMaster("spark://linux01:7077")
            .setAppName("WC")
            // 指定jar包的地址,在项目的 target下
            .setJars(Array("F:\\project_zhenpeng1\\spark0331\\target\\spark0331-1.0-SNAPSHOT.jar"))
            // 因为我们是把本机作为drive,这里需要设置设置drive的地址,也就是本机ip的ip地址,
            .setIfMissing("spark.driver.host", "192.168.0.108")

        //创建SparkContext,该对象是提交spark App的入口
        val sc = new SparkContext(conf)

        //使用sc 创建RDD并执行相应的transformation和action
        sc.textFile("hdfs://linux01:8020/0331/words.txt")
            .flatMap(_.split(" "))
            .map((_, 1))
            .reduceByKey(_ + _)
            .saveAsTextFile("hdfs://linux01:8020/0331/output")

        //停止sc,结束该任务
        sc.stop()
    }
}

你可能感兴趣的:(spark)