1、 软件准备
Linux: Ubuntu 14.04
JDK : jdk-7u79-linux-x64.tar.gz
Scala SDK: scala-2.11.0.tgz
Hadoop HA集群:基于Hadoop2.2.0 、yarn、zookeeper-3.4.5
Idea IDE: ideaIC-2016.2.5.tar.gz
Scala插件:scala-intellij-bin-2016.2.1.zip
Spark: spark-1.0.0-bin-hadoop2.tgz
(以上软件通过网络可轻易获得,安装步骤省略)
1、 程序编写与打包
(1)新建工程,打开idea新建工程 选择scala 取名ScalaExample(可自定义)
点击file,选择Project Structure 得到下图
在Modules选项中,新建的工程只有src,右键点击src新建文件夹main,在main下新建scala作为默认的包名,并将main设置为sources(注意不能将main和scala都设置为sources,编译会报错),如下图
OK后回到工程
(2)写代码,在main下建立自己的包 如com.ha,在包下建立WordCount.scala文件,选择Object
代码如下:
package com.ha
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
/**
* Created by ubuntu on 10/23/17.
*/
object WordCount {
def main(args: Array[String]){
if(args.length<1){
System.err.println("Usage: ")
System.exit(1)
}
val conf=new SparkConf()
val sc = new SparkContext(conf)
val line = sc.textFile(args(0))
line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)
sc.stop()
}
}
注意: 需要在Project Structure的Libraries下添加jar,定位到spark/bin/spark-assembly-1.0.0-hadoop2.2.0
(3)打jar包
在Project Structure的Artifacts选项中添加
Ok,回到工程
在build选项中选择Build Artifacts
选择Build
编译结束后发现
表明jar包打好了,将jar包放到~/jar/下并命名为wordcount.jar
1、 提交jar
启动Hadoop HA集群
将file.txt文件put到HDFS中,内容自定
//先创建目录
hadoop fs -mkdir /will/input
//再上传文件
hadoop fs -put file.txt /will/input
//定位到jar包所在目录
./spark-submit --master spark://master:7077 --name WordCount --class com.ha.WordCount --driver-memory 512M --executor-memory 512M --total-executor-cores 3 /home/ubuntu/jar/wordcount.jar /will/input/file.txt
//说明
spark-submit 提交指令
--masterspark://master:7077 spark的URL
--name WordCount app的名称可随意取
--class com.ha.WordCount main函数的入口全类名
--driver-memory 512M --executor-memory 512M 内存
--total-executor-cores 3 需要启动的executor数
/home/ubuntu/jar/wordcount.jar jar包的本地路径
/will/input/file.txt 输入文件的HDFS路径
//结果
(scala,1)
(4,1)
(8,1)
(6,1)
(JavaSparkContext,1)
(JavaRDD,1)
(Function2,1)
(2,1)
(Tuple2,1)
(org,7)
(apache,7)
(JavaPairRDD,1)
(java,7)
(function,4)
(api,7)
(Function,1)
(PairFunction,1)
(spark,7)
(FlatMapFunction,1)
(7,1)
(5,1)
(import,8)
(3,1)
(1,1)