Spark学习笔记1--Scala

spark是一个开源集群运算框架,最初是由加州大学柏克莱分校AMPLab所开发。相对于Hadoop的MapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了存储器内运算技术,能在数据尚未写入硬盘时即在存储器内分析运算。

两种在命令行里的打开方式

1 、输入spark-shell 此时可以用scala输入

2 、输入 pyspark 此时可以用notebook打开

Scala

1 scala语言

(1)复制大量代码

:paste ,cont+D 结束该模式

scala后面的分号可选,多条语句的时候需要添加

(2)数据类型,首字母需大写

Byte,Short,Double,Float,Int,Lont,Char,Null,Any,AnyRef

(3) 数据的两种类型,val常量,var变量 val name:type=初始值,可显

val x=1+1

val x:Int=1+1

var x:Int=1+1

声明数组:var z:Array[String]=new Array[String](3) 或者

z:Array[String]=Array[String](null,null,null)

z(0)=”baidu”;z(1)=”google”;z(2)=”biying”

数据的基本操作

str.length

str.head查看第一个元素

sre.tai查看除第一个外其他的元素

str.isEmpty 是否为空

str.contains(x) 判断是否包含x

(4)数据的连接 可以用++ 也可以concat

val arr1=Array(1,2,3);

val arr2=Array(4,5);

val arr3 = arr1++arr2

使用concat需要先用 import Array._ 引入包

val arr4=concat(arr1,arr2)

range(1,10,2)同样需要先引入import Array._

(5)函数

def funcname(参数列表):[return type]={}

return type为返回值类型,如果没有返回值,写Unit scala可以没有return关键字

def add(a:Int,b:Int):Int={a+b} 或者

def add(a:Int,b:Int):Int={

var sum = 0

sum = a+b

return sum

}

(6)匿名函数

val addInt=(a:Int,b:Int)=>x+y

addInt(1,2)

如果每个参数最多出现一次,用_替代

val addInt=(_:Int)+(_:Int);

addInt(1,2)

(7)循环

a to b 区间包括b,a until b 区间没有b

打印1到10

for (i<-1 to 10){

println(i+” “)}

打印99乘法表

for(i<-1 to 10;j<-1 to i){

println(i+”*”+j+”=”+i*j+” “)

if(i==j) println()}

也可以过滤元素,比如大于6的偶数

for (i<-1 to 10;if i%2==0;if i >6){

println(i)}

使用yield把返回值作为变量存储,如将区间1-10之间的偶数记录下来

var even=for (i<=1 to 10;if i%2==0)yield i

(8)列表,列表的合并都可以用concat或者::: 反合并是.:::

val num1:List[Int]=List(1,2,3)

集合,集合的合并都可以++ 反合并是.++

val set:Set[Int]=Set(1,2,3)

(9)Map 可迭代键值对,大写Map为python里的字典

val person:Map[String,Int]=Map(“Joho”->21,”Betty”->20,”Doge”->13)

person.keys

person.values

(10)函数组合器

map 通过一个函数重新计算列表里所有元素,小写map

val num1:List[Int]=List(1,2,3)

num1.map(x=>x*x)

foreach 类似map ,但是没有返回值,需要的h话需要加print

num1.foreach(x=>print(x*x+”\t”))

filter 过滤,只保留为true的元素

num1.filter(x=>x%2==0)

flatten 把嵌套的解构展开,如二维转一维

val list1=List(List(1,2,3),List(4,5,6))

list1.flatten 得到 List[Int] = List(1, 2, 3, 4, 5, 6)

groupBy 分组操作,得到的是一个map,如根据奇偶分组,得到包含两个键值对的map

val num2:List[Int]=List(1,2,3,4,5,6,7,8,9,10)

num2.groupBy(x=>x%2==0)

得到 scala.collection.immutable.Map[Boolean,List[Int]] = Map(false -> List(1, 3, 5, 7, 9), true -> List(2, 4, 6, 8, 10))

example:

val phone:List[String]=List(“209991,121231313,广东,深圳,移动”,

“233233,323232342广东,广州,移动”)

phone.groupBy (x=>x.split(“,”)(3)) #切分,针对第四个分组

(11)Scala写入 文件

Scala不提供特殊文件写入能力,xuyaoJAVA的I/O类

创建文件test,写入信息

import java.io._

val pw=new PrintWriter(new File (“/opt/scala/test.txt”))

pw.write(“I am learning Scala”)

pw.clsoe

(12)Scala读文件

import scala.io.Source

Source.fromFile(“/opt/scala/test.txt”).foreach{print}

    原文作者:我的名字叫实干
    原文地址: https://zhuanlan.zhihu.com/p/61629705
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞