Spark入门1(WordCount实现)
Posted yuanninesuns
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark入门1(WordCount实现)相关的知识,希望对你有一定的参考价值。
1 package com.test 2 3 4 import org.apache.spark.{SparkConf, SparkContext} 5 6 7 object WordCount { 8 def main(args: Array[String]) { 9 /** 10 * 第1步;创建Spark的配置对象SparkConf,设置Spark程序运行时的配置信息 11 * 例如 setAppName用来设置应用程序的名称,在程序运行的监控界面可以看到该名称, 12 * setMaster设置程序运行在本地还是运行在集群中,运行在本地可是使用local参数,也可以使用local[K]/local[*], 13 * 可以去spark官网查看它们不同的意义。 如果要运行在集群中,以Standalone模式运行的话,需要使用spark://HOST:PORT 14 * 的形式指定master的IP和端口号,默认是7077 15 */ 16 val conf = new SparkConf().setAppName("WordCount").setMaster("local") 17 // val conf = new SparkConf().setAppName("WordCount").setMaster("spark://master:7077") // 运行在集群中 18 19 /** 20 * 第2步:创建SparkContext 对象 21 * SparkContext是Spark程序所有功能的唯一入口 22 * SparkContext核心作用: 初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler、TaskScheduler、SchedulerBackend 23 * 同时还会负责Spark程序往Master注册程序 24 * 25 * 通过传入SparkConf实例来定制Spark运行的具体参数和配置信息 26 */ 27 val sc = new SparkContext(conf) 28 29 /** 30 * 第3步: 根据具体的数据来源(HDFS、 HBase、Local FS、DB、 S3等)通过SparkContext来创建RDD 31 * RDD 的创建基本有三种方式: 根据外部的数据来源(例如HDFS)、根据Scala集合使用SparkContext的parallelize方法、 32 * 由其他的RDD操作产生 33 * 数据会被RDD划分成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴 34 */ 35 36 val lines = sc.textFile("D:/wordCount.txt") // 读取本地文件 37 // val lines = sc.textFile("/library/wordcount/input") // 读取HDFS文件,并切分成不同的Partition 38 // val lines = sc.textFile("hdfs://master:9000/libarary/wordcount/input") // 或者明确指明是从HDFS上获取数据 39 40 /** 41 * 第4步: 对初始的RDD进行Transformation级别的处理,例如 map、filter等高阶函数来进行具体的数据计算 42 */ 43 val words = lines.flatMap(_.split(" ")).filter(word => word != " ") // 拆分单词,并过滤掉空格,当然还可以继续进行过滤,如去掉标点符号 44 45 val pairs = words.map(word => (word, 1)) // 在单词拆分的基础上对每个单词实例计数为1, 也就是 word => (word, 1) 46 47 val wordscount = pairs.reduceByKey(_ + _) // 在每个单词实例计数为1的基础之上统计每个单词在文件中出现的总次数, 即key相同的value相加 48 // val wordscount = pairs.reduceByKey((v1, v2) => v1 + v2) // 等同于 49 50 wordscount.collect.foreach(println) // 打印结果,使用collect会将集群中的数据收集到当前运行drive的机器上,需要保证单台机器能放得下所有数据 51 52 sc.stop() // 释放资源 53 54 } 55 }
来自博客:
http://blog.csdn.net/dwb1015/article/details/52013362
以上是关于Spark入门1(WordCount实现)的主要内容,如果未能解决你的问题,请参考以下文章