zoukankan      html  css  js  c++  java
  • 大数据入门第二十天——scala入门(一)入门与配置

    一、概述

      1.什么是scala 

      Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。

      官网http://www.scala-lang.org/

      scala 特性:   

          面向对象特性、

        函数式编程

        静态类型

        扩展性

        并发性

      详细的阐述,参考菜鸟教程http://www.runoob.com/scala/scala-intro.html

              易百教程https://www.yiibai.com/scala/scala_overview.html

      通过官网的一句话总结:当面向对象遇上函数式编程。

      到今天(2018年),scala 已经15岁了!

      2.scala 如何工作

    • 编译成Java字节码
    • 可在任何标准JVM上运行
      • 甚至是一些不规范的JVM上,如Dalvik
      • Scala编译器是Java编译器的作者写的

      3.为什么选择scala

    作者:吴雪峰
    链接:https://www.zhihu.com/question/27630156/answer/37598031
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
    我想大部分应用开发程序员,最关键是看有什么类库合适的方便特定领域的应用开发。
    就像ruby有rails做web开发,你可以去论证ruby优缺点,但实际上应用开发效率提升很大程度上依靠类库。
    现在Spark是大数据领域的杀手级应用框架,BAT,我们现在几个领域巨头的客户(有保密协议不方便透露)都全面使用Spark了,
    这个时候再谈Scala适不适合大数据开发其实意义不大。因为大家比的不只是编程语言,而是构建在这个编程语言之上的类库、
    社区和生态圈(包括文档和数据、衍生类库、商业技术支持、成熟产品等等)。那么反过来问,为什么Spark会选择Scala可能更有意义一点。
    Spark主创Matei在不同场合回答两次这个问题,思考的点稍微不一样,但重点是一样的,很适合回答题主的问题。总结来说最主要有三点:

    1. API能做得优雅; 这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。


    2. 能融合到Hadoop生态圈,要用JVM语言; Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。
    JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。

    3. 速度要快; Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多,非常接近Java。关于Scala性能的问题,
    主要分两种情况,

    1. Scala的基准性能很接近Java,但确实没有Java好。但很多任务的单次执行的,性能损失在毫秒级不是什么问题;

    2. 在大数据计算次数很多的情况下,我们全部写成命令式,而且还要考虑GC,JIT等基于JVM特性的优化。Scala很难是个很含糊的问题,
    关键是要看你想达到什么目的。我们培训客户做Spark开发,基本上一两个星期就可以独立工作了。当然师傅领进门,修行靠个人
    ,一两个星期能独立工作不代表能马上成为Scala或Spark专家。
    这里回答主要针对大数据产品应用开发,不是大数据分析。大数据分析是个更泛的话题,包括大数据分析实验和大数据分析产品等。
    实验关心建模和快速试不同方式,产品关心稳定、可拓展性。大数据分析实验首选R(SAS),python和Matlab, 通常只拿真实数据的一小部分,
    在一个性能很好的单机上试各种想法。Scala目前在大数据分析实验上没有太多优势,不过现在有人在做R语言的Scala实现,
    可以无缝和Spark等大数据平台做衔接。当然现在也已经有SparkR了,可能用R和Spark做交互。

     二、安装

      1.前置条件

        安装JDK

      2.下载scala

        前往官网下载msi 的安装包,这里选择和spark兼容的2.10版本中的2.10.6的版

        注意此版本不允许安装目录有空格(默认的Program Files 不可用!)

      3.配置环境变量

    SCALA_HOME: 变量值一栏输入:F:scala
    Path追加:%SCALA_HOME%in;%SCALA_HOME%jrein;
    (WIN 10分两项追加)

      4.验证

    scala -version 

     三、安装IDEA的scala插件

      

      重启完成插件的安装、

     三、基础知识

      1.交互式编程

         在cmd窗口输入scala即可

    $ scala
    Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> 1 + 1
    res0: Int = 2
    
    scala> println("Hello World!")
    Hello World!
    
    scala> 

      2.注释

        与Java保持一致

      3.包

        定义包与导包与Java一致

      4.访问修饰符

        Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。

        如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public

        Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。

        在 scala 中,对保护(Protected)成员的访问比 java 更严格一些。因为它只允许保护成员在定义了该成员的的类的子类中被访问(Java本包和子类)。

      5.结束符

        结束符分号;在scala是可选的(通常IDEA会提示是多余的)  

  • 相关阅读:
    leetcode Remove Linked List Elements
    leetcode Word Pattern
    leetcode Isomorphic Strings
    leetcode Valid Parentheses
    leetcode Remove Nth Node From End of List
    leetcode Contains Duplicate II
    leetcode Rectangle Area
    leetcode Length of Last Word
    leetcode Valid Sudoku
    leetcode Reverse Bits
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8610959.html
Copyright © 2011-2022 走看看