大数据入门第二十天——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%\bin;%SCALA_HOME%\jre\bin; (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 = 2scala> 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会提示是多余的)
转载于:https://www.cnblogs.com/jiangbei/p/8610959.html
大数据入门第二十天——scala入门(一)入门与配置相关推荐
- 大数据入门第二十天——scala入门(二)scala基础02
一. 类.对象.继承.特质 1.类 Scala的类与Java.C++的类比起来更简洁 定义: package com.jiangbei //在Scala中,类并不用声明为public. //Scala ...
- 大数据入门第零天——总体课程体系概述
主要包括以下几大块: 大数据基础课程 离线数据分析 离线数据分析hbase 实时数据分析 Scala函数式编程 Spark内存计算 机器学习增强 前五天的课程都是基础课,主要包含Linux基础 ...
- 大数据入门第五天——离线计算之hadoop(上)概述与集群安装
一.概述 根据之前的凡技术必登其官网的原则,我们当然先得找到它的官网:http://hadoop.apache.org/ 1.什么是hadoop 先看官网介绍: The Apache™ Hadoop® ...
- 大数据入门第一块——dota2数据分析(一)
既然要做一个项目,那么就从自己比较有兴趣的板块开始自己的入门.dota作为一款moba类鼻祖游戏,本人已经摸爬滚打了近10年,从一个高中愣头青,也玩到了一个快要步入中年的研究生了,从当年最无敌的娜迦潮 ...
- 23.大数据学习之旅——scala进阶
函数式编程的概念 编程范式 函数式编程是一种编程范式,我们常见的编程范式有: 1)命令式编程(Imperative programming),常见的面向对象编程是也是一种命令式编 程.比如java,c ...
- 大数据平台hadoop运维之hadoop入门-高俊峰-专题视频课程
大数据平台hadoop运维之hadoop入门-5245人已学习 课程介绍 主要介绍hadoop生态圈的常用软件和基础知识,可使学员迅速了解hadoop运维的基础知识,并迅速掌握hado ...
- 好程序员大数据学习路线分享scala单列和伴生对象
好程序员大数据学习路线分享scala单列和伴生对象 scala单例 object SingletonDemo { def main(args: Array[String]): Unit = { val ...
- MAC系统中搭建Spark大数据平台(包括Scala)
MAC系统中搭建Spark大数据平台(包括Scala) 总体介绍: 大家Spark大数据平台,包括三部分内容:JDK,Scala,Spark 这三者是依次依赖的关系,Spark依赖于Scala环境(S ...
- 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例【转】
Kylin 麒麟官网:http://kylin.apache.org/cn/download/ 关键字:olap.Kylin Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的 ...
最新文章
- mysql 审核引擎 goInception 的基本使用
- Linux下修复修改profile文件导致命令不用可的解决方法
- 深入Android 【一】 —— 序及开篇
- R语言中package ‘xxxx’ is not available (for R version 3.2.5)解决
- pyinstaller打包tensorflow+python程序成.exe各种坑(持续添加)
- paip. java resin 远程 调试 java resin remote debug
- GmSSL3.0 在Android上的命令行风格封装
- matlab信号加入白噪音再分离,Matlab中给信号增加白噪声
- 2012年度江西省科学技术奖授奖项目名单
- JDK内置命令行工具
- xlwings使用笔记
- 数据库查数据 索引
- C#学习资源网站汇总
- 截取Chrome下载的mp3
- 阿米洛键盘使用手册2021-02-22
- 3Dmax怎么渲染AO图?云渲染AO图是什么?
- Java 从多线程到并发编程(五)—— 线程调度 优先级倒置(反转) 阻塞 死锁 suspend
- iphone邮箱看不到已发送_不看不知道 教你如何设置iPhone邮箱
- 杭州中高级职称评审流程
- SpringCloud(Hoxton SR6)微服务工具集学习笔记
热门文章
- JavaScript 字符串转换小写
- 多任务学习模型MTL: MMoE、PLE
- 排查mysql innodb Lock wait timeout exceeded; try restarting transaction的问题
- Ext.NET控件介绍—Form控件
- 2020网络安全NISP一级(模拟题十)
- 小码哥-玩转【斗鱼直播APP】系列之游戏推荐展示
- ZYNQ 7000 PS和PL 信号、接口、管脚分布
- 一个超级好用的网站导航站点
- 计算机一级真题选择,全国计算机一级选择题真题版
- ACM常用技巧之尺取法--POJ3061/3320/2739/2100