Scala入门笔记

mac安装scala

brew cask install java
brew install scala

本地安装scala环境:~/.zshrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home
export SCALA_HOME=/Library/Scala/scala-2.10.6
PATH=$PATH:${SCALA_HOME}/bin:${JAVA_HOME}/bin

Hello World

➜  ~ scala
Welcome to Scala 2.12.7 (OpenJDK 64-Bit Server VM, Java 11.0.1).
Type in expressions for evaluation. Or try :help.

scala> print("hello world!")
hello world!
scala> :quit

Scala IDEA和MAC版安装
IDEA 运行Scala程序出现无法加载主类问题的解决
+添加Library的Scala SDK(运行不报错),覆盖原来modules的dependencies里的Scala SDK(编译不报错,运行报错:找不到或无法加载主类

下载不动plugins?配置HTTP代理

IDEA 运行scala程序

object Test {
  def main(args: Array[String]): Unit = {
    println("Hello World~ ~ ~")
  }
}

eclipse 配置scala插件

下载插件(一定要对应eclipse版本下载)
http://scala-ide.org/download/prev-stable.html  


将features和plugins两个文件夹拷贝到eclipse安装目录中的”dropins/scala”目录下。
进入dropins,新建scala文件夹,将两个文件夹拷贝到“dropins/scala”下


Scala官网6个特征

  • Java和scala可以混编
  • 类型推测(自动推测类型)
  • 并发和分布式(Actor)
  • 特质,特征(类似java中interfaces 和 abstract结合)
  • 模式匹配(类似java switch)
  • 高阶函数


Scala的WordCount

导入spark-assembly-1.6.0-hadoop2.6.0.jar包;项目中创建words.txt文件

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.rdd.RDD.rddToPairRDDFunctions

object WordCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    conf.setMaster("local").setAppName("WC")
    val sc = new SparkContext(conf)
    val lines :RDD[String] = sc.textFile("./words.txt")
    val word :RDD[String]  = lines.flatMap{lines => {
      lines.split(" ")
    }}
    val pairs : RDD[(String,Int)] = word.map{ x => (x,1) }
    val result = pairs.reduceByKey{(a,b)=> {a+b}}
    // result.sortBy(_._1, false).foreach(println)
    result.sortBy(_._1,true).foreach(println)
    
    // 简化写法
    // lines.flatMap { _.split(" ")}.map { (_,1)}.reduceByKey(_+_).foreach(println)
  }
}

flatMap:1对多
map:来一个String出1个String,1对1
reduceByKey:相同key分在1组;对每1组的key进行累加
先分组,后对每一组的key对应的value去聚合

输出结果

(c++,2)
(hbase,2)
(hello,17)
(hive,1)
(java,5)
(matlab,3)
(mongodb,1)
(mysql,3)
(objective-c,2)
(oracle,1)
(pig,1)
(python,8)
(redies,2)
(sqoop,3)
(swift,3)
(word,4)
(zookeeper,1)

参考资料

Scala学习笔记(一) - 简书
hive找出掉线率最高的前10基站&WordCount


Scala学习笔记导航

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (写给因苦难而离开世界的孩子!) 踏着轻盈的步子 穿过漫花小径 远处 弥漫着欢声笑语 天使说 那里有快乐的世界 有...
    月空下阅读 310评论 2 7
  • 秋意浓, 离人心上秋意浓。 一杯酒, 情绪万种。 离别多, 叶落的季节离别多。 握住你的手, 放在心头。 我要你记...
    贾小呆520阅读 741评论 0 0

友情链接更多精彩内容