Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机)之上,并兼容现有的Java程序。因此,要安装Scala环境之前,首先需要安装Java的JDK。学习Scala编程语言,将为后续学习Spark和Flink奠定基础。视频讲解如下:
下面的代码展示了在Spark中如何使用Scala开发一个WordCount程序。
package demo import org.apache.spark.SparkContext import org.apache.spark.SparkConf import org.apache.log4j.Logger import org.apache.log4j.Level object WordCountDemo { def main(args: Array[String]): Unit = { Logger.getLogger("org.apache.spark").setLevel(Level.ERROR) Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF) //本地模式 //val conf = new SparkConf().setAppName("WordCountDemo").setMaster("local") //集群模式 val conf = new SparkConf().setAppName("WordCountDemo") //创建SparkContext val sc = new SparkContext(conf) val result = sc.textFile("hdfs://bigdata111:9000/input/data.txt") .flatMap(_.split(" ")) .map((_,1)) .reduceByKey(_+_) //输出到屏幕 result.collect.foreach(println) //输出到HDFS result.saveAsTextFile("hdfs://bigdata111:9000/output/spark/wc") sc.stop } }
在Flink中也可以使用Scala编程语言,下面的代码也将在Flink中执行一个WordCount程序。
package demo import org.apache.flink.api.scala._ object WordCount { def main(args: Array[String]) { val env = ExecutionEnvironment.getExecutionEnvironment val text = env.fromElements("I love Beijing","I love China", "Beijing is the capital of China") val counts = text.flatMap(_.split(" ")).map((_,1)).groupBy(0).sum(1) counts.print() } }