1、注意scala与spark的版本匹配的问题
下面这个匹配是没有问题的
name := "top"
version := "0.1"
scalaVersion := "2.11.12"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
scala的版本如果不是2.11.12,spark的版本不是2.1.0.否则很可能就会造成不对应的结果
下面是用scala求最大最小值的程序
import org.apache.spark.{SparkConf,SparkContext}
/**
* @author
* @date 2020-09-03 20:11
* @version 1.0
*/
object MaxAndMin {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("MaxAndMin").setMaster("local")
val sc = new SparkContext(conf)
sc.setLogLevel("ERROR")
val lines = sc.textFile("/Users/navyliu/Downloads/Spark/minMax.txt")
val result = lines.filter(_.trim().length>0).map(line => ("key",line.trim.toInt)).groupByKey().map(x =>{
var min = Integer.MAX_VALUE
var max = Integer.MIN_VALUE
for(num<- x._2){
if(num > max) {
max = num
}
if(num < min) {
min = num
}
}
(max,min)
}).collect().foreach(x=> {
println("max\t" + x._1)
println("min\t" + x._2)
})
}
}
文本文件为:
129
23
4554
6656
444
4
4664
789
55
8889
55
9
55454
执行结果为:
温馨提示:
1、如果执行过程中报下面这个错误:
“找不到或无法加载主类”
请先compile这个项目,然后在run,这样就可以了.
2、代码的循环解释:
for(num<- x._2){…
}
for语句是对x._2进行遍历,
x._2就是键值对(key,value-list)中的 value-list,这里的value-list就是<234,434343,2332,4444>
如果还遇到什么问题,请扫描关注下方二维码: