大数据最火爆语言Scala光速入门

scala 可以使用java的库
scala 的工厂方法:apply
条件表达式有返回值
数组可以用to ,箭头 <-
最后一行内容的值是整个代码块的返回值
def函数 定义函数,调用不按顺序
函数:def 函数名,参数名:类型名,可以设定默认值,后可跟=号,如def f1 ( param1:String, param2: Int = 30) = param1 + param2
有默认值的参数调用时可以不加参数,另外调用时如果指定参数名的话可以不考虑参数顺序。
参数数量可变:def sum(numbers:Int*) *表示变长 调用时不可sum(0 to 100) ,因为0 to 100是range类型,而参数中要求是变量,但是可以用 0 to 100 _* ,表示变成多个值

过程:无返回值的函数,定义函数返回值为Unit,在参数列表之后加上:Unit ,或者将函数定义后的=改变成花括号

lazy 类型:第一次被定义时计算

异常

try {val content = fromFile("/usr/local/spark/sfijweoijgr/")
}catch{case _: FileNotFoundException => println("Ooooops!!! File not found")
} finally {println("Byebye world!")
}

集合
数组val arr = new ArrayInt

ArrayBuffer的insert,remove方法

scala> val arr1 = Array("Scala","Spark")
arr1: Array[String] = Array(Scala, Spark)scala> val arr1 = Array.apply("Scala","Spark")
arr1: Array[String] = Array(Scala, Spark)scala> Array
res3: Array.type = scala.Array$@54d18072scala> arr1(2) = "Hadoop"
java.lang.ArrayIndexOutOfBoundsException: 2... 33 elidedscala> val arrbuf = ArrayBuffer[Int]()
<console>:7: error: not found: value ArrayBufferval arrbuf = ArrayBuffer[Int]()^scala> import scala.collection.mutable.A
AVLIterator      AbstractIterable   AbstractSet   ArrayBuilder   ArraySeq
AVLTree          AbstractMap        AnyRefMap     ArrayLike      ArrayStack
AbstractBuffer   AbstractSeq        ArrayBuffer   ArrayOps                    scala> import scala.collection.mutable.Array
ArrayBuffer   ArrayBuilder   ArrayLike   ArrayOps   ArraySeq   ArrayStackscala> import scala.collection.mutable.ArrayBu
ArrayBuffer   ArrayBuilderscala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBufferscala> val arrbuf = ArrayBuffer[Int]()
arrbuf: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()scala> arrbuf += 10
res5: arrbuf.type = ArrayBuffer(10)scala> arrbuf
res6: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10)scala> arrbuf(1)
java.lang.IndexOutOfBoundsException: 1at scala.collection.mutable.ResizableArray$class.apply(ResizableArray.scala:43)at scala.collection.mutable.ArrayBuffer.apply(ArrayBuffer.scala:48)... 33 elidedscala> arrbuf += ( 12,23,35,56)
res8: arrbuf.type = ArrayBuffer(10, 12, 23, 35, 56)scala> arrbuf
res9: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 12, 23, 35, 56)scala> arrbuf ++= Array(1,2,3,4)
<console>:1: error: illegal character '\uff08'arrbuf ++= Array(1,,2,3,4)^
<console>:1: error: illegal character '\uff0c'arrbuf ++= Array(1,,2,3,4)^scala> arrbuf ++= Array(1,2,3,4)
res10: arrbuf.type = ArrayBuffer(10, 12, 23, 35, 56, 1, 2, 3, 4)scala> arrbuf
res11: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 12, 23, 35, 56, 1, 2, 3, 4)scala> arrbuf.t
tail        takeWhile   toIndexedSeq   toMap      toString        transpose
tails       to          toIterable     toSeq      toTraversable   trimEnd
take        toArray     toIterator     toSet      toVector        trimStart
takeRight   toBuffer    toList         toStream   transform                   scala> arrbuf.t
tail        takeWhile   toIndexedSeq   toMap      toString        transpose
tails       to          toIterable     toSeq      toTraversable   trimEnd
take        toArray     toIterator     toSet      toVector        trimStart
takeRight   toBuffer    toList         toStream   transform                   scala> arrbuf.trim
trimEnd   trimStartscala> arrbuf.trim
trimEnd   trimStartscala> arrbuf.trimEnd(3)scala> arrbuf
res13: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 12, 23, 35, 56, 1)scala> arrbuf
res14: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 12, 23, 35, 56, 1)scala> arrbuf.in
indexOf        indexWhere   init    insert      intersect
indexOfSlice   indices      inits   insertAll               scala> arrbuf.insert(4,100)scala> arrbuf
res16: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 12, 23, 35, 100, 56, 1)scala> arrbuf.insert(6,7,8,9)scala> arrbuf
res18: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 12, 23, 35, 100, 56, 7, 8, 9, 1)scala> arrbuf.remove(0)
res19: Int = 10scala> arrbuf
res20: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(12, 23, 35, 100, 56, 7, 8, 9, 1)scala> arrbuf.remove(1,2)scala> arrbuf
res22: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(12, 100, 56, 7, 8, 9, 1)scala> val arr2 = arrbuf.toArray
arr2: Array[Int] = Array(12, 100, 56, 7, 8, 9, 1)scala> arr2.toBuffer
res23: scala.collection.mutable.Buffer[Int] = ArrayBuffer(12, 100, 56, 7, 8, 9, 1)scala> arr2.toStringdef toString(): Stringscala> arr2.toBuffer
res24: scala.collection.mutable.Buffer[Int] = ArrayBuffer(12, 100, 56, 7, 8, 9, 1)scala> for ( elem <- arr2) { elem}scala> for ( elem <- arr2) {println(elem)}
12
100
56
7
8
9
1scala> for( i <- 1 until (arr2.length,1)) println(arr2(i))
100
56
7
8
9
1scala> for( i <- 1 until (arr2.length,2)) println(arr2(i))
100
7
9scala> for( i <- 0 until (arr2.length,2)) println(arr2(i))
12
56
8
1scala> for( i <- 0 until (arr2.length,2)) println(arr2(i))
12
56
8
1scala> arr2
res31: Array[Int] = Array(12, 100, 56, 7, 8, 9, 1)scala> for(i <- (0 until arr2.length).reverse) println(arr2(i))
1
9
8
7
56
100
12scala> import scala.util.Sorting._
import scala.util.Sorting._scala> quickSort(arr2)scala> arr2
res34: Array[Int] = Array(1, 7, 8, 9, 12, 56, 100)scala> val arr3 = for(i <- arr2) yield i*i
arr3: Array[Int] = Array(1, 49, 64, 81, 144, 3136, 10000)scala> val arr4 = for(i <- arr2 if i%3 == 0) yield i*i
arr4: Array[Int] = Array(81, 144)scala>  arr2.filter(_%3 ==0).map(i => i*i)
res35: Array[Int] = Array(81, 144)scala>  arr2.filter{_%3 ==0}.map{i => i*i}
res36: Array[Int] = Array(81, 144)scala>  arr2.filter{_%3 ==0}map{i => i*i}
res3: Array[Int] = Array(144, 81)

yield 把后面的每一个元素收集起来并组拼成一个集合

作业:删掉数组中第一个负数后面的所有负数

scala> val person = Map("Spark" ->6, "Hadoop" -> 11)
person: scala.collection.immutable.Map[String,Int] = Map(Spark -> 6, Hadoop -> 11)scala> person("Hadoop")
res4: Int = 11scala> val person = scala.collection.mutable.Map("Spark" ->6, "Hadoop" -> 11)
person: scala.collection.mutable.Map[String,Int] = Map(Hadoop -> 11, Spark -> 6)scala> person += ("Flink" -> 5)
res5: person.type = Map(Hadoop -> 11, Spark -> 6, Flink -> 5)scala> person -= "Flink"
res6: person.type = Map(Hadoop -> 11, Spark -> 6)scala> val sparkValue = if (person.contains("Spark")) person("Spark") else 1000
sparkValue: Int = 6scala> val sparkValue = person.getOrElse
getOrElse   getOrElseUpdatescala> val sparkValue = person.getOrElse("Spark", 1000)
sparkValue: Int = 6scala> val sparkValue = person.getOrElse("Flink", 1000)
sparkValue: Int = 1000scala> for((key,value) <- person) println(key+":"+value)
Hadoop:11
Spark:6scala> for((key,value) <- person) println(key+":")
Hadoop:
Spark:scala> val person = scala.collection.mutable.S.Map("Spark" ->6, "Hadoop" -> 11)
Seq          SetProxy        Subscriber                  SynchronizedSet
SeqLike      SortedSet       SynchronizedBuffer          SynchronizedStack
Set          Stack           SynchronizedMap
SetBuilder   StackProxy      SynchronizedPriorityQueue
SetLike      StringBuilder   SynchronizedQueue                               scala> val person = scala.collection.immutable.S.Map("Spark" ->6, "Hadoop" -> 11)
Seq   SetProxy    SortedSet   Stream           StreamView       StringLike
Set   SortedMap   Stack       StreamIterator   StreamViewLike   StringOps    scala> val person = scala.collection.immutable.SortedMap("Spark" ->6, "Hadoop" -> 11)
person: scala.collection.immutable.SortedMap[String,Int] = Map(Hadoop -> 11, Spark -> 6)TUPLE:
scala> val tuple = ("Spark", 6, 99.0)
tuple: (String, Int, Double) = (Spark,6,99.0)scala> tuple._1
res9: String = Sparkscala> tuple._2
res10: Int = 6scala> tuple._3
res11: Double = 99.0

3000门徒内部训练绝密视频(泄密版)第1课:大数据最火爆语言Scala光速入门相关推荐

  1. 3000门徒内部训练绝密视频(泄密版)第3课:Scala中函数式编程彻底精通及Spark源码阅读

    Scala中函数式编程彻底精通及Spark源码阅读 函数可以不依赖于类,函数可以作为函数的参数,函数可以作为函数的返回值 =>表明对左面的参数进行右面的加工 函数赋值给变量需要在函数名后面加空格 ...

  2. 3000门徒内部训练绝密视频(泄密版)第5课:彻底精通Scala隐式转换和并发编程及Spark源码阅读

    彻底精通Scala隐式转换和并发编程及Spark源码阅读 Akka ,Scala内部并发 隐式转换.隐式类.隐式参数 可以手动指定某种类型的对象或类转换成其他类型的对象或类.转换的原因是假设写好接口 ...

  3. 3000门徒内部训练绝密视频(泄密版)第8课:彻底实战详解使用IDE开发Spark程序

    彻底实战详解使用IDE开发Spark程序 使用IDE开发Spark分析 使用IDE开发Spark实战 使用IDE开发Spark的Local和Cluster 开发两种选择:IDEA.Eclipse 下载 ...

  4. 3000门徒内部训练绝密视频(泄密版)第2课:Scala面向对象彻底精通及Spark源码阅读

    Scala面向对象彻底精通及Spark源码阅读 不用写public class中的public class Person {private var myName = "flink" ...

  5. 视频+全文|朱嘉明:大数据时代的危机与挑战 - 在DAO原则下构建分布式存储、分布式计算与分布式能源的未来...

    朱嘉明 著名经济学家 横琴数链数字金融研究院 学术与技术委员会主席 经朱嘉明老师和DOIT授权,全文转载.先附上视频,抱歉不知为何封面图转了90度,不过点击进去播放是正常的. 大家好,我是朱嘉明. 首 ...

  6. c++程序设计(第三版) pdf_【好课传送】C++语言程序设计基础入门视频

    [机器学习之美导读]C/C++语言发展至今已有40多年的历史,在全世界应用非常广泛,是主流的开发语言. C/C++体系语言是IT工程师长远发展的首选,具备C++背景的工程师被互联网IT后端团队认定为团 ...

  7. python编写spark程序 视频_【Python版pyspark】Spark大数据基础入门视频课程

    [注意:本课程只包含pyspark系列课程的基础入门部分] Python版本的pyspark是学习Python的人的福音,为广大的Python开发人员提供了一个使用Python调用Spark接口处理大 ...

  8. hive内部表和外部表的区别_走近大数据之Hive进阶(四、Hive的表连接)

    HIVE表连接(转换成mapreduce作业,提交到hadoop上) 一.Hive等值连接和不等值连接 等值连接(连接条件中为等号): select e.empno, e.ename,e.sal,d. ...

  9. 学习笔记(01):大数据视频_Hadoop视频教程(上)-大数据课程

    立即学习:https://edu.csdn.net/course/play/19912/254968?utm_source=blogtoedu 1

最新文章

  1. php汉字的截取,php汉字截取
  2. Spring Boot 应用系列 1 -- Spring Boot 2 整合Spring Data JPA和Druid,双数据源
  3. 基于S3C2440A+SDRAM(K4M51163)
  4. python网络编程-socket编程
  5. python函数名与变量名可以一样吗_python--第一类对象,函数名,变量名
  6. OpenStack精华问答 | OpenStack的网络类型有哪些?
  7. ZooKeeper(一)linux上单机与集群的搭建
  8. opencv学习笔记02
  9. Python内置函数详解
  10. MindSpore: CV.Rescale(rescale,shift)中参数rescale和shift的含义?
  11. 125K非接触IC卡读卡头
  12. IDEA社区版搭建web项目
  13. 烤仔的朋友们丨如梦如幻的 2020 上半场
  14. Android系统sdcard目录
  15. Java I/O---概述
  16. 穷养儿富养女 很多人都不知道这句话的真正含义
  17. 刘盈盈计算机科学与技术,关于成立乐清市中小学幼儿园新教师专业发展指导师团队的通知...
  18. 真心话大冒险的暴强回复
  19. 案例分析警示安全隐患:免费WiFi购物卷走账户余额
  20. 一个精英的诞生,家庭因素有多大?

热门文章

  1. tcp的三次握手和四次挥手(详解+图片)
  2. UG NX二次开发(C#)-导出-导出Parasolid文件(.x_t文件)
  3. MES系统电子看板,真正实现车间可视化管理
  4. Android对渐变颜色的处理
  5. HSWMS出入库及调拨管理
  6. 瑞芯微RK3399K简单介绍及烧写镜像
  7. 火绒安全警报:疑似方正集团子公司签名泄露 遭黑客利用盗取Steam账号
  8. 达内java学习day13+day14
  9. matlab hu矩特征和svm,基于融合Hu矩和区域矩特征的多车牌定位
  10. Sqlmap学习笔记(叁)