大数据最火爆语言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. 备考信息系统项目管理师-----Day2
  2. 互联网1分钟 | 0124 抖音社交产品“多闪”登顶苹果商店总排行榜;王欣或将推出新社交产品丸子视频...
  3. U3D激发拍照新活力,Camera360优化之旅
  4. 嵌入式linux应用程序开发详解_【精品套餐】嵌入式linux应用驱动开发完全学习路线...
  5. “央视boys” 四人带货超5亿:权来康康,撒开了买
  6. Spring mvc @PathVaribale
  7. java 代码整洁快捷方式_代码整洁之道:你的代码是否足够优雅、整洁、易懂?...
  8. PDFSAM:简朴好用的 PDF 抢救器材
  9. java1.8 ojdbc14.jar_ojdbc14_g.jar与ojdbc14.jar区别
  10. Elas Digital:定义一个Token的最简易方法
  11. 机器学习教程 - 分步指南
  12. 小园丁与老司机_疲倦的园丁
  13. Golang Fyne项目实战(含源码)
  14. 总结一下自己的大学四年
  15. Windows XP 注册表修改大全
  16. 微信小程序商城源码学习
  17. 制作WIN10U盘启动盘
  18. sshpass和scp的使用
  19. 模仿是学习的最佳途径
  20. 忍不住吐个槽:985硕,2021年毕业入职某国企,月薪不到一万,年终奖490元!

热门文章

  1. kirin710f是什么处理器_麒麟710a与710f哪个好谁性能更强 参数规格对比评测
  2. iOS开发库和框架大全
  3. 自适应光学望远镜技术
  4. Byte Buddy 入门教程
  5. CNN:卷积神经网络
  6. 初学者学习maya软件,年薪逐步上升,他是怎么做到的?
  7. 芯片技术——智能可穿戴设备的关键技术
  8. 有问必答 | GRS RCS认证,您关心的那些事
  9. 2022-04-14 在TXT文档中查找汉字——C语言及C++中多字节与宽字符的区别
  10. Python中Tkinter知识点总结