zoukankan      html  css  js  c++  java
  • scala资料总结,一些小技巧,IDEA安装scala插件,IDEA创建scala项目的三种方法,spark读取txt和写txt

    scala资料总结,一些小技巧

    1、得到每种数据类型所表示的范围

    Short.MaxValue 32767
    Short.MinValue -32768
    Int.MaxValue 2147483647
    Int.MinValue -2147483648
    Double.MaxValue 1.7976931348623157E308
    Double.MinValue -1.7976931348623157E308

    2、Scala 中没有break方法,可以使用

    import scala.util.control.Breaks._

    break()

    3、用scala 产生0-256的随机数

    import java.lang.Math.random
    A(i) =(random()*256).toShort
    4、数学函数,幂指数 
    import breeze.numerics.pow
    5、类型转换,如转换为 short 类型

    a.toShort

    6、循环方式

    while

    foreach(a=>println(a))

    for(i<- 0 to 10)

    7、定义数组方式

    var A= new Array[Int](100)

    8、定义函数方式

    def DtoB(X :Int) : Array[Short] ={ }

    总之,千万不要忘了scala 是面向函数语言

     

     

    scala资料总结

    1、Scala中文社区

    http://www.scala-china.NET/discuz/forum.PHP?mod=viewthread&tid=142875&extra=page%3D1

    2、scala标准库

    http://www.scala-lang.org/api/current/index.html#package

    3、scala  tour(非常有用,总结得很精辟)

    http://zh.scala-tour.com/#/welcome

    4、scala  学习笔记

    http://blog.csdn.Net/a071800/article/details/47279951

    5、scala  基础学习篇(别人的学习笔记)

    http://blog.csdn.net/android_lyxd/article/details/38016851

    6、scala  学习笔记

    http://blog.csdn.net/bluishglc/article/details/43956625

    7、scala基础语法代码

    http://blog.csdn.net/yunlong34574/article/details/38620699

    8、scala list讲解

    http://www.yiibai.com/scala/scala_lists.html

    scalc入门与配置

    一、概述

      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

    复制代码
    最主要有三点:
    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做交互。
    复制代码

     二、安装scala

    SCALA_HOME: 变量值一栏输入:F:scala
    Path追加:%SCALA_HOME%in;%SCALA_HOME%jrein;
    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会提示是多余的) 

    IDEA创建scala项目的三种方法

    转自  https://blog.csdn.net/u013850277/article/details/78526046

    • 用了好几年的Eclipse,最近想着了解下Scala,听说Intelli JDEA这个工具很强大,因而开始着手试试 Intelli JDEA,下面是运用该工具创建Scala项目的一些简单操作。
    • Scala的拥护者们认为Scala的主要优势是速度和它的表达性。

    • 安装完 IJ IDEA 工具以及配置好Scala 环境便可进行Scala 开发了。 
      IJ IDEA 原本是不支持开发Scala的,因而需要自行安装Scala插件

    • 在线安装Scala插件步骤如下:

    这里写图片描述

    这里写图片描述


    一、创建普通Scala 项目

    需要手动添加依赖包,

    这里写图片描述

    选择IDEA 便是创建普通的Scala 项目(注:IJ IDEA版本的不同,这里IDEA可能显示成Scala,不过这个并没有什么影响)

    这里写图片描述

    这里写图片描述

    如果scala已下载安装,此处直接添加已有scala的路径即可,下载步骤如下: 

    这里写图片描述

    新建一个scala class ,选object,创建后如下所示: 
    这里写图片描述


    二、创建Sbt 项目

    • sbt是scala的御用打包管理工具,SBT-based Scala project (recommended)
    • 注:第一次通过 SBT 创建Scala项目时会很慢(大概需要十来分钟),因为SBT会加载很多相关的包,但是后面再进行创建就会很快了。

    前面的步骤跟创建普通项目一样: 
    这里写图片描述

    • 选择Scala 版本以及SBT 版本,笔者SBT选择默认的,Scala 选择与本地安装版本一致的

    这里写图片描述

    • 创建后的项目结构如图所示:

    这里写图片描述

    • 创建Object

    这里写图片描述


    三、通过Maven 创建 Scala 项目

    • 通过File - > new project 与前面两种方式一致就不重复了
    • 选择Maven(前提得先配置好IJ IDEA 工具的Maven环境) 
      具操作见下图:

    这里写图片描述

    • 点击Next,如下图:

    这里写图片描述

    • 点击Next,选择已安装的Maven 环境

    这里写图片描述

    这里写图片描述

    • 创建成功后如下所示:

    这里写图片描述

    • 上面的 App 类以及test中对应的类是创建项目时自动创建的,试着运行发现出现上述错误,本人比较懒,所以直接将自动创建的类全部drop掉,自行创建了一个HelloScala类,运行没问题,如下图:

    这里写图片描述

     
     
     
     
     
     


    spark读取txt和写txt

    1.首先启动hdfs
    2.向hdfs上传一个文件到hdfs://node1.itcast.cn:9000/words.txt
    3.在spark shell中用scala语言编写spark程序
    sc.textFile("hdfs://node1.itcast.cn:9000/words.txt").flatMap(_.split(" "))
    .map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://node1.itcast.cn:9000/out")
    
    4.使用hdfs命令查看结果
    hdfs dfs -ls hdfs://node1.itcast.cn:9000/out/p*
    
    说明:
    sc是SparkContext对象,该对象时提交spark程序的入口
    textFile(hdfs://node1.itcast.cn:9000/words.txt)是hdfs中读取数据
    flatMap(_.split(" "))先map在压平
    map((_,1))将单词和1构成元组
    reduceByKey(_+_)按照key进行reduce,并将value累加
    saveAsTextFile("hdfs://node1.itcast.cn:9000/out")将结果写入到hdfs中
  • 相关阅读:
    java基础练习 4
    java基础练习 5
    java基础练习 3
    java基础练习 2
    二级联动菜单动态刷新下拉列表的一种实现方法
    疯狂Java讲义笔记(二)
    Windows10 Internet Explorer已停止工作的解决方法
    Git笔记
    Spring Boot笔记
    maven笔记
  • 原文地址:https://www.cnblogs.com/timssd/p/6045488.html
Copyright © 2011-2022 走看看