美文网首页Spark
Scala入门笔记

Scala入门笔记

作者: geekAppke | 来源:发表于2018-11-21 09:20 被阅读113次

    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学习笔记导航

    相关文章

      网友评论

        本文标题:Scala入门笔记

        本文链接:https://www.haomeiwen.com/subject/qzkqqqtx.html