SCALA - 技术教程文章

docker中spark+scala安装配置【图】

一、scala安装首先下载scala压缩包 wget https://downloads.lightbend.com/scala/2.11.7/scala-2.11.7.tgz解压tar -zxvf scala-2.11.7.tgz移动目录mv scala-2.11.7 /usr/local/改名cd /usr/local/mv scala-2.11.7 scala配置环境变量vim /etc/profileexport SCALA_HOME=/usr/local/scalaexport PATH=$PATH:$SCALA_HOME/bin环境变量生效source /etc/profile查看scala版本scala -version分发scala到其他主机scp -r /usr/local/scala/ ...

Scala--第七天【代码】

一、内部类定义:实现一个抽象类 或者 Trait 时 可以通过内部类的方式完成 1abstractclass Cmx {2 def func: Unit3 4 }5 6 def main(args: Array[String]): Unit = {7 var cmx = new Cmx {8 override def func: Unit = {9 println("我是内部类") 10 } 11 } 12 cmx.func 13//我是内部类14 }二、特质 Trait  定义:类似于其它语言的接口  格式:trait 名称{      //抽象成员方法或属...

第88讲:Scala中使用For表达式实现map、flatMap、filter

今天我们来学习一下如何使用for表达式实现map、flatMap以及filter首先,我们来看下map。map的功能是,传入一个list,通过一个函数f,将list中的元素A变成元素B的过程。最后得到由B形成的列表。这个过程如果由for循环实现的话,如下操作:for(element <- list) yield f(element)接下来我们看下flatMap。flatMap的功能是,传入一个list,通过一个函数f,将list中的每个元素转换成一个列表,最后返回由这些列表中的所有元素构成的列表...

Scala-Unit7-Scala并发编程模型AKKA【代码】【图】

一、Akka简介  Akka时spark的底层通信框架,Hadoop的底层通信框架时rpc。  并发的程序编写很难,但是Akka解决了spark的这个问题。  Akka构建在JVM平台上,是一种高并发、分布式、并且容错的应用工具包;  Akka使用Scala语言编写,同时它提供了Scala和Java的开发接口,Akka可以开发一些高并发的程序。 二、Akka的Acor模型  A卡卡处理并发的方法基于actor模型,在基于actor的系统中,所有事物都是actor(类似于Java的万物皆...

跟我学scala(一)基础、控制结构和函数

平时使用Spark比较多,但是对于scala的学习只限于看过书、能写代码,从来没有系统的学习过。此次看《快学scala》,做读书笔记,算是从头学习一下。《快学scala》pdf书百度云地址:https://pan.baidu.com/s/1Bv-k08wffXpnkzCymnYe8w一:基础变量和常量  val age = 10; //生成一个常量,推荐使用常量,缺点不可变   var name,classId = "100"; //生成两个变量name,classid 同时赋值为100  val name,classId :String =...

Scala 深入浅出实战经典 第91讲:Akka第一个案例动手实战架构设计【图】

mapreduce机制在actor模式下的设计结构650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112020921996.jpg" title="actor.png" />原文:http://2615187.blog.51cto.com/2605187/1693959

Scala集合笔记【代码】

Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更加有助于我们学习Scala和Spark: List,Map,Set的一些api的用法如下:/** * Scala 集合测试 */ def collectionTest(): Unit ={ val map =Map("red"->"红色","green"->"绿色") val colors = List("red", "green", "blue") //map函数测试 ,打印长...

Scala中class、object、case class、case object区别【代码】

/** class、object、case class、case object区别 * * class 类似Java中的class; * object Scala不能定义静态成员,用定义单例对象代之; * case class被称为样例类,是一种特殊的类,常被用于模式匹配。 * * 一、class 和 object 关系: * 1.单例对象不能带参数,类可以 * 2.对象可以和类名一样时,object被称为伴生对象,class被称为伴生类; * 3.类和伴生对象可以相互访问其私有属性,但是它们必须在一个源文件当中;...

spark scala分组取最新日期的几条记录max date【代码】

val emp = Seq((1,"Smith",-1,"2018","10","M",3000),(2,"Rose",1,"2010","20","M",4000),(1,"Williams",1,"2020","10","M",1000),(2,"Jones",2,"2005","10","F",2000),(1,"Brown",2,"2020","40","",-1),(6,"Brown",2,"2010","50","",-1))val empColumns = Seq("emp_id","name","superior_emp_id","year_joined","emp_dept_id","gender","salary")import spark.sqlContext.implicits._val empDF = emp.toDF(empColumns:_*)empDF.sh...

IDEA中使用SBT构建SCALA项目【代码】【图】

SBT(Simple Build Tool)是SCALA平台的项目构建工具,比Maven更简洁、比IVY更为灵活。 一、环境win10JDK8scala 2.11.8 下载地址sbt 0.13.17 下载地址jdk、scala、sbt环境变量设置不再累述,自行搞定二、SBT仓库设置修改配置文件 : D:\software\sbt-0.13.17\sbt\conf\sbtconfig.txt# Set the java args to high-Xmx512M-XX:MaxPermSize=256m-XX:ReservedCodeCacheSize=128m# Set the extra SBT options-Dsbt.log.format=true-Dsbt...

Scala实现乘法口诀

object Test4 { def main(args: Array[String]) { for (i <- 1 to 9; j <- 1 to 9 if (j <= i)) if (j < i) print(j + "*" + i + "=" + i * j + "\t") else if (j == i) println(j + "*" + i + "=" + i * j + "\t") }}1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=3...

Scala 编译出现“java.io.IOException: no such file: .”解决方法【代码】

只用改成:1 scalac test.scala //编译的时候使用的是Scala文件名称2 scala -classpath . HelloWorld //执行的时候使用的是HelloWorld对象名称原文:https://www.cnblogs.com/smartisn/p/12200579.html

Scala入门到精通——第十三节 高阶函数【代码】【图】

本节主要内容高阶函数简介Scala中的常用高阶函数SAM转换函数柯里化偏函数1. 高阶函数简介高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数);另外一种是返回值是函数的函数。这两种在本教程的第五节 函数与闭包中已经有所涉及,这里简单地回顾一下: (1)函数参数//函数参数,即传入另一个函数的参数是函数 //((Int)=>String)=>String scala> def convertIntToString(f:(Int)=>String)=f(4)convertIntTo...

java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)【代码】

spark提交自己编写的jar的时候如果出现如上的错误,多半是你项目中使用的spark相关jar的版本和你提交到的spark的版本不匹配,如下: 项目pom.xml导入的spark-core版本号如下:<dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>2.4.5</version></dependency> 但是你spark集群的版本又是2.11的,项目中使用的jar的版本一定要和spark目录下面的jars里面的版本一致才行原文:https:/...

Scala multiple inheritance. Mixin order v.s. Super order.【代码】

Code is everything:trait Base1 {println("mixing Base1")def print() {println("Base1")} }trait A extends Base1 {println("mixing A")override def print() {println("A")super.print()} }trait B extends Base1 {println("mixing B")override def print() {println("B")super.print()} }class Base2 {println("mixing Base2")def print() {println("Base2")} }/*** C extends Base2 with A with B* => inheritance linearizat...

java环境中基于jvm的两大语言:scala,groovy

java环境中基于jvm的两大语言:scala,groovy可以在java项目里混编这两种语言;scala:静态语言,多范式语言,糅合了面向对象、面向过程;可以与java和net互操作;融汇了众多的语言特性,包括类似net的闭包、lambda表达式;正是语言特性较多,语言复杂度也较高~~groovy:动态语言,既可作为面向对象语言又可做脚本语言;拥有动态语言的好处;语法简单~~scala、groovy都是作为java的替代语言,基于jdk1.6可以使用起来像jdk1.8的高级语...

第28讲:Scala提取器Extractor实战详解【代码】

提取器是从表达式中获取值第27讲中的match代码也是一种提取器 def match_array(arr : Any) = arr match { case Array(x) => println("Array(1):",x) // 长度为1的数组,x代表数组中的值 case Array(x,y) => println("Array(2):",x,y) // 长度为2的数组,x代表数组中的第一个值 case Array(x,_*) => println("任意一维数组:",x) //任意长度数组,取第一个值 case Array(_*) => println("任意一维数组")...

scala pattern matching【代码】

scala语言的一大重要特性之一就是模式匹配。在我看来,这个怎么看都很像java语言中的switch语句,但是,这个仅仅只是像(因为有case关键字),他们毕竟是不同的东西,switch在java中,只能是用在函数体类的,且需要结合break使用。但是,在scala语言中,pattern matching除了有case关键字,其他,似乎和java又有很多甚至完全不同的东西。 scala在消息处理中为模式匹配提供了强大的支持! 下面看看模式匹配的英文定义:A pattern ma...

Scala深入浅出实战经典---001-Scala开发环境搭建和HelloWorld解析【图】

001-Scala开发环境搭建和HelloWorld解析Scala函数式编程和面向对象结合的语言函数式编程擅长数值计算面向对象擅长大型工程和项目的组织以及团队的分工协作Scala会是下一个伟大的语言吗?Spark是用Scala语言编写的Hadoop是用Java语言编写的少动一根手指Scala开发环境基于JVM的运行环境需要安装JAVA建议7或者8版本注意选择匹配的位数和系统的JAVA配置环境变量JAVA_HOMEPATH中添加bin目录CLASS_PATHdt.jartools.jar当前目录SCALASpark支...

IDEA 安装scala插件【图】

安装scala插件一般有两种方式,在IDEA里面下载或者手动安装手动安装首先是下载需要的插件包,官网下载实在太慢,这里提供我下载好的文件,会按时更新成最新版 https://pan.baidu.com/s/1gfcdVcZ下载好文件后,按如下步骤操作一、打开设置二、打开插件安装设置,选择从硬盘文件安装三、选择下载好的jar包即可特别要注意的是,此插件必须保持最新,否则会导致scala编译失败 原文:http://www.cnblogs.com/starwater/p/6766831.html

《快学Scala》Chapter 4知识点提要【代码】

package num01 import scala.collection.convert.AsScalaConverters import scala.collection.JavaConverters. import scala.collection.mutable.Mapobject scala_for_impatient {def main(args: Array[String]): Unit = {val scores0 = Map("Alice" -> 10,"Bob" -> 3,"Cindy" -> 8)val scores1 = scala.collection.mutable.Map("Alice" -> 10,"Bob" -> 3,"Cindy" -> 8)val scores2 = new scala.collection.mutable.HashMap[Strin...

scala 闭包的概念【代码】【图】

闭包本质上是一个函数和其引用的变量的统一定义,它的返回值依赖于这个函数外部的一个或者多个变量。var test = (i:Int) => i+sum 这里 i是一个形参, 随着函数的调用传入不同的值 。而more是一个自由变量。依照函数的字面量(个人理解为函数名)在运行时创建函数对象被称作闭包,通过捕获自由变量的绑定,从而对函数字面量执行的关闭动作。当自由变量的值发生改变是, 闭包可以捕获这一变化, 从而做出相应的改变。如上图, 当sum...

Scala快速入门(四)——继承、接口【代码】

Scala快速入门(四)——继承、接口一、继承1.继承的概念:省略2.模板:class Person(n:String,a:Int) {var name:String=nvar age:Int=adef showInfo():Unit={println("学生信息如下")println("名字:"+name)println("年龄:"+age)} } class Student(n:String,a:Int) extends Person(n,a){def study():Unit={println(this.name+". Im learning scala. ")} }3.方法的重写直接在方法之前用override进行修饰案例:class OverRideTest ...

Scalaz(38)- Free :Coproduce-Monadic语句组合

很多函数式编程爱好者都把FP称为Monadic Programming,意思是用Monad进行编程。我想FP作为一种比较成熟的编程模式,应该有一套比较规范的操作模式吧。因为Free能把任何F[A]升格成Monad,所以Free的算式(AST)、算法(Interpreter)关注分离(separation of concern)模式应该可以成为一种规范的FP编程模式。我们在前面的几篇讨论中都涉及了一些AST的设计和运算,但都是一些功能单一,离散的例子。如果希望通过Free获取一个完整可用...

Scala新版本学习(1):【图】

1.进官网:https://www.scala-lang.org/上面就是进入Scala社区后的一个画面,官方对Scala的简单介绍是:Scala将面向对象和函数式编程集合在一个简洁的高级语言中,Scala的静态类型有助于避免复杂应用程序中的错误。2.Scala六个特性。(1)可以和java无缝整合,即在Scala中可以调用java包中的类,或者在Java中也可以调用Scala包中的类。Scala也是运行在JVM上的,因此Java和Scala堆栈可以自由混合以实现完全无缝集成。(2)类型推断。类型...

Scala本地安装【图】

一、下载 https://www.scala-lang.org/download/ 这里我选择Scala2.10.4版本 二、安装 安装比较简单 和jdk类似 点击一路安装: 选择自己的路径 完成三、环境变量配置(和jdk类似) 找到path,在最后添加;%SCALA_HOME%\bin;%SCALA_HOME%\jre\bin 查看是否安装成功成功 原文:https://www.cnblogs.com/lyywj170403/p/9182429.html

perl 纯变量(Scalar) 转载

转载http://blog.chinaunix.net/uid-20639775-id-154591.htmlPerl有三种变量:纯变量(Scalar Varible)数组(Array)关联数组(Associative array)一、纯变量 又称标量变量,是Perl处理的最简单的数据类型。标量可以是数字(如2,3或2.5e6), 也可以是字符串(如“hello”和“网上学园”)。 Perl中的标量变量以美元符号$和一个字母开始,以后可以是字母、数字和下划线,大小写有区别,而且所有字母、数字和下划线都有效。如: $...

用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)

为什么要写这篇博客?  首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclipse,有时间自己去玩玩。但最好追随大流。  对于hadoop项目,强烈建议用eclipse。   其次,出于有博友给我留言的索求需要,为了更高效率和高质量帮助大家,梳理写下这篇博客。    这篇博客  是在Scala IDEA for Eclipse里手动创建scala代码编写环境。 这篇博客  是在Scala...

Scala:object(单例)【代码】

Scala开篇(目录)使用Java的同学,对单例模式应该很熟悉了,在类的内部声明一个private static 的自身类型的对象,然后通过一个static的方法返回即可。在Scala中,是没有static这个东西的,但是它也为我们提供了单例模式的实现方法,那就是 object(别混了,不是万物之根的object) Scala中使用单例模式时,除了定义的类之外,还要定义一个同名的object对象,它和类的区别是,object对象不能带参数,先看一段实现代码/**这是我们...

scala的基础概念

scala方法的定义:def methed(参数:类型..) :返回类型 = {}:非递归返回类型可以省略返回类型;返回类型是Unit时,可以省略=;函数的定义:val f:类型=>类型 = {参数=>返回};val f = (参数列表) => {实现}:函数可以作为方法的参数;方法(利用了_转换成函数了)也可以作为方法的参数;数组:Array[数组类型](数据)Array(Apply);new定长数组、变长数组ArrayBuffer;访问;+=、++=、-=、insert(位置,数据)、remove(位置,数据...