我们已经了解了在spark命令行当中使用交互方式完成词频统计,本节将阐述在idea当中使用sbt环境完成scala代码,并进行词频统计。
1 系统、软件以及前提约束
- CentOS 7 64 工作站 作者的机子ip是192.168.100.200,主机名为danji,请读者根据自己实际情况设置
- 已在linux中完成scala交互方式的词频统计
https://www.jianshu.com/p/92257e814e59 - 已经有待统计的文件word上传到HDFS,名字为/word
- 已经idea中完成scala的第一个测试程序
https://www.jianshu.com/p/ec64c70e6bb6 - idea 2018.2
- 为去除权限对操作的影响,所有操作都以root进行
2 操作
-
1 在idea中创建sbt项目
选中File->New->Project->Scala->sbt->Next
需要等待一段时间。
- 2 配置依赖包:
在build.sbt中加入以下内容:
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
- 3 在src/main/scala中创建一个WordCount.scala的类,内容如下
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object ScalaWordCount {
def main(args: Array[String]): Unit = {
//在windows下执行,必须设置本地的hadoop安装路径,倘若打成jar包,上传到linux,则不需要设置
System.setProperty("hadoop.home.dir", "C:\\hadoop2.7.2")
val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local[2]")
// 创建SparkContext
val sc: SparkContext = new SparkContext(conf)
sc.textFile("hdfs://192.168.100.200:9000/word")
.flatMap(_.split(" "))
.map((_,1))
.reduceByKey(_+_)
.saveAsTextFile("hdfs://192.168.100.200:9000/outputscala")
// 释放资源
sc.stop()
}
}
- 4 执行,查看HDFS服务当中的outputscala即可看到执行结果。
以上,就是我们在spark当中使用scala进行词频统计的过程。