Spark 运行第一个Scala程序WordCount
安装
首先去官网下载Spark。注意Spark和Hadoop之间版本对应关系,我自己装的Hadoop 2.7.5版本,按照下面方式下载即可。
下载完成后,解压安装包至路径/usr/local
tar -zxf ./spark-2.3.0-bin-hadoop2.7.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.3.0-bin-hadoop/ ./spark #更改文件夹名
sudo chown -R hadoop ./spark #此处的hadoop为系统用户
配置Spark的Classpath
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
接着编辑该配置文件,在文件最后面加上如下一行内容
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
保存配置文件后,就可以启动,若需要使用HDFS中的文件,则在使用Spark前需要启动Hadoop。
这里简单的单机安装就可以了,关于集群安装可以参考其他资料。
第一个Spark程序
首先在IDEA中添加Scala支持插件
依次点击File->New->Project,选择Scala->SBT,SBT是一款Spark用来对scala编写程序进行打包的工具。下一步,打开如下窗口:
Scala的版本2.11.8,使用./bin/spark-shell进入shell时我们可以看到版本信息。
创建完成后会进行初始化操作,自动下载jar包等。下载时常看具体网络情况。待所有进度条完成后,项目目录已经出来了,如下:
编辑build.sbt文件
name := "SparkDemo"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.0"
这里添加了依赖的jar包。前面,我们创建项目时已经勾选了自动导入,编辑完成后,IDEA就会自动下载导入spark-core相关的jar包。
上面配置完成后,就可以开始代码编写。src->scala右击新建一个scala的单例对象WordCount,代码如下:
object WordCount {
def main(args: Array[String]): Unit = {
val wordFile = "file:///usr/local/spark/mycode/wordcount/word.txt"
val conf = new SparkConf().setAppName("wordcount");
val sc = new SparkContext(conf)
val input = sc.textFile(wordFile, 2).cache()
val lines = input.flatMap(line=>line.split(" "))
val count = lines.map(word => (word,1)).reduceByKey{case (x,y)=>x+y}
val output = count.saveAsTextFile("/home/hadoop/hellospark")
}
}
接着将上面代码打成jar包,打开Project Structure,选择Artifacts,点击右上角加号,配置jar打包信息。
这里有两个选项,第一个会打包依赖,这里不打包依赖,选下面一个。配置jar包完成后,Build->Build Artifacts,等待build完成。完成后会在项目下生成一个out目录,out目录下面会生成很多jar,我们生成的是sparkdemo.jar。
运行程序
在/usr/local/spark/mycode/wordcount目录下创建word.txt文件。
hello world
hello spark
my name is scala
This is my first Spark programm.
Spark is good
使用下面的命令
./bin/spark-submit --class "WordCount" /home/hadoop/Desktop/sparkdemo.jar
这里Spark依赖于Hadoop的分布式文件系统HDFS,到HDFS中查看执行结果
上一篇: 置换 perm.cpp
推荐阅读
-
[Asp.Net Core] Blazor Server Side 开发教程 - 安装环境与运行第一个程序
-
Spark程序运行报错:JVM申请的memory不足解决办法
-
Python运行第一个PySide2的窗体程序
-
python如何运行(第一个python小程序示范)
-
C++ 实验二 NO.1_(3) 1:熟悉DEV环境,练习自己的第一个程序使用DEV集成环境来编辑,运行简单的数据输入和运算实验。(3)编写一个程序,要求:提示输入3个数;显示这3个数,求他们的平均值
-
IDEA 编写第一个 Scala 程序
-
python、scala、java分别实现在spark上实现WordCount
-
MapReduce编程 一步步地教你开启 第一个程序wordcount
-
交叉编译并移植tslib-1.21和QT4.8.5运行第一个嵌入式Qt程序
-
运行第一个Hello world!程序