1、首先需要搭建好hadoop+spark环境,并保证服务正常。本文以wordcount为例。
2、创建源文件,即输入源。hello.txt文件,内容如下:
tom jerry
henry jim
suse lusy
注:以空格为分隔符
3、然后执行如下命令:
hadoop fs -mkdir -p /Hadoop/Input(在HDFS创建目录)
hadoop fs -put hello.txt /Hadoop/Input(将hello.txt文件上传到HDFS)
hadoop fs -ls /Hadoop/Input (查看上传的文件)
hadoop fs -text /Hadoop/Input/hello.txt (查看文件内容)
4、用spark-shell先测试一下wordcount任务。
(1)启动spark-shell,当然需要在spark的bin目录下执行,但是这里我配置了环境变量。
(2)然后直接输入scala语句:
val file=sc.textFile("hdfs://hacluster/Hadoop/Input/hello.txt")
val rdd = file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)
ok,测试通过。
5、Scala实现单词计数
1 packagecom.example.spark2
3 /**4 * User: hadoop
5 * Date: 2017/8/17 0010
6 * Time: 10:20
7*/
8 importorg.apache.spark.SparkConf9 importorg.apache.spark.SparkContext10 importorg.apache.spark.SparkContext._11
12 /**13 * 统计字符出现次数
14*/
15object ScalaWordCount {16def main(args: Array[String]) {17 if (args.length < 1) {18 System.err.println("Usage: ")19 System.exit(1)20}21
22 val conf = newSparkConf()23 val sc = newSparkContext(conf)24 val line = sc.textFile(args(0))25
26 line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)27
28sc.stop()29}30 }
6、用java实现wordcount
packagecom.example.spark;importjava.util.Arrays;importjava.util.List;importjava.util.regex.Pattern;import