标签:
授课总结阶段划分:
第一阶段,所有讲解知识点都是集合具体实战
第二阶段,千万实例项目讲解,价值百万,掌握相关技术后就能精通偶年薪百万
精度Spark各种环境,内核原理,运行机制非常熟悉,碰上故障知道原因、解决,擅长性能优化
策底掌握一个大型大数据项目,涉及
课程后每次都完成作业,才能得到这个项目的全部源码。
第三阶段,机器学习,前面2个阶段掌握牢固,第三阶段才能够掌握
1.1
scala,运行在JVM,可以调用JAVA任何库,
scala比JAVA,scala是一门纯面向对象语言。
scala天生是函数式编程和面向对象编程的集合体,编写同样的功能Scala可以比JAVA少编写4/5的代码
Spark内部很复杂,必须了解源码,必须制定内部运行机制
新浪微博是主要导师和门徒们主要交流的地方
装VMWARE 装linux ubantu 25分钟
装scala 2.10.4
装jdk 1.8.0
1.1scala基础
类型能够自动转换如1.5*2
命令行中top按钮有方法自动联想功能
toChar,toInt等类型转换方法
变量分为可变变量和不可变变量,val 定义的变量的值不可变,var定义的则可变
变量定义类型后后续只能赋值该类型值或者子类型值
一行代码同时申请多个变量,val age1,age2,age3=0
0.to(5) ,相当于Range(0,1,2,3,4,5) 一切都是对象
1.+(1) ,结果为2,这里加是方法
不能用i++,能用i+=1
import scala.math._ 引入scala库方式
min(20,4)
val array=Array(1,2,3,4) ,等于 val array=Array.apply(1,2,3,4)定义数据
val result=if (age >=18) "adult" else "child" , if和结果输出
代码块最后一行内容的值,就是整个代码块的返回值
打印换行 println("Spark\n")
printf("%s World!\n",“Hello”) ,字符串带参数替换
readInt,readLine ,获取屏幕输入
do ..while 1:03分钟
for(i<- 0 to 100) if i%2 ==0) println(i) ,for循环和if同用
:paste ,命令行多行代码编写方式,如写函数
注意最后的return 0,因为f1要返回Int,语法检查无法判断内部返回了吗,所以外部需要设计个默认返回值
1625811243yy
val n = 10
def f1:Int = {
for(i<-1 to 10){
if(i==n)return i
println(i)
}
return 0
}
def f3(param1:String,param2:Int=30) =param1+param2 ,带参数的函数定义及入参默认值
f3(param2=100,param1="Scala") ,不关注函数入参顺序的方式
def sum(numbers:Int*)={var result=0; for(element <-numbers) result +=element;result} ,变长参数类型
sum(1 to 100) ,这种传参方式是不行的
1626320654yy
1 to 100 : _* ???
sum(1 to 100: _*) ,这种方式是正确的
lazy val comtent =fromFile("/root/testsf") , 读取文件,同时lazy后面的语句在定义时不分配资源,使用时才分配资源,即定义时不检查,不占资源,执行时才检查,分配资源
try{
val content=fromFile("/root/testsf").mkString
}catch{
case _:FileNotFoundException=>
}flnally{
println("")
}
val arr= new Array[Int](s) ,定义数组,这里用到val仅是对象地址不可更改,值可以更改
val arr1=Array("Scala","Spark") ,scala类型推导,程序自动定义了String类型
import scala.collection.mutable.ArrayBuffer
val arrBuffer=ArrayBuffer[Int]()
arrBuffer+=Array(1,2,3,4)
arrBuffer++=Array(1,2,3,4) 增加双份的值
arrBuffer.insert(5,100)
arrBuffer.insert(5,100,101)
arrBuffer.trimEnd(3)
arrBuffer.remove(3)
arrBuffer.remove(3,2)
val arr2=arrBuffer.toArray
arr2.toBuffer
val arr2=Array(1,1,3,4,10,11,100)
for (i<-0 until (arr2.length,2)) println(arr2(i))
arr2.mkString(",") 转为字符串并以","分割
arr2.filter(_%3==0).map(i->i*i) ,????
val persons=Map("Spark"->6,"Hadoop"->11)
persons("Hadoop")
persons+=("Flink"->5)
persons-="Flink"
persions.contains("Spark") 判断是否有key
persions.getOrElse("Spark",1000) 改值
for((key,value)<-persions)println(key+":"+value)
多值MAP
tuble
分3天讲scala,让能够看懂spark95%源码
明日讲面向对象所有内容,知识量是今天的3倍,重要性
作业之二:写一篇本次课程的学习笔记 然后在新浪微博上@我
群:
462923555
437123764
418110145
第一阶段2-3个月,第二阶段2-3个月
与spark关系的是hadoop DHFS
作业之一:移除一个数组中第一个负数后的所有负数
import scala.collection.mutable.ArrayBuffer
def deletePlural:ArrayBuffer[Int] =(arr1:ArrayBuffer[Int]){
val arrBuffer=ArrayBuffer[Int]()
for (i<-arr1){
if (i>=0){
arrBuffer+=i
}
}
arrBuffer
}
val arr1=ArrayBuffer(1,1,3,-1,4,-2,-5,10,11,100,-12)
arr1=deletePlural(arr1)
for (i<-arr1){
println(i)
}
标签:
原文地址:http://www.cnblogs.com/jackie-fan/p/5107867.html