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会提示是多余的)  

  • 相关阅读:
    互联网创业的葵花宝典
    null和undefined的区别
    mpc0.9编译方法
    gmp5.0.5编译
    为iphone及iphone simulator编译poco库
    binutils2.22编译心得
    为iphone及iphone simulator编译qt库
    sql server之触发器调用C#CLR存储过程实现两个表的数据同步
    poco之HttpRequest之get方法
    poco之HttpRequest之post方法
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8610959.html
Copyright © 2011-2022 走看看