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中
  • 相关阅读:
    【leetcode】1295. Find Numbers with Even Number of Digits
    【leetcode】427. Construct Quad Tree
    【leetcode】1240. Tiling a Rectangle with the Fewest Squares
    【leetcode】1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold
    【leetcode】1291. Sequential Digits
    【leetcode】1290. Convert Binary Number in a Linked List to Integer
    【leetcode】1269. Number of Ways to Stay in the Same Place After Some Steps
    【leetcode】1289. Minimum Falling Path Sum II
    【leetcode】1288. Remove Covered Intervals
    【leetcode】1287. Element Appearing More Than 25% In Sorted Array
  • 原文地址:https://www.cnblogs.com/timssd/p/6045488.html
Copyright © 2011-2022 走看看