当前位置: 代码网 > it编程>游戏开发>ar > spark总结

spark总结

2024年08月02日 ar 我要评论
元组(Tuple)是一种类似于列表的结构,但与列表不同的是,元组可以包含不同类的元素。元组的值是通过将单个的值包含在圆括号中构成的。映射(Map)是一种可迭代的键值对结构,所有值都可以通过键获取,并且映射中键都是唯一的,定义如图2-31所示。#也可以使用write()方法写入数据,pw.write("IamlearningScala")#使用sortBy()方法对元组的第二个值进行降序排序,分区个数设置为1。#通过filter()方法过滤其中每个元组第二个值小于等于1的元素。20,fillter()方法。

1:创建数组

#第1种方式
var arr: array[string] = new array[string](num)
#第2种方式
var arr:array[string] = array(元素1,元素2,...)

2:数组的方法

lengt 返回数组的长度
 head 查看数组的第一个元素
 tail 查看数组中除了第一个元素外的其他元素
 isempty 判断数组是否为空
 contains(x) 判断数组是否包含元素x

用法

#查看数组z的长度
 z.length
#查看数组z的第一个元素
 z.head
#查看数组z中除了第一个元素外的其他元素
 z.tai
#判断数组z是否为空
 z.isempty
#判断数组z是否包含元素"baidu"
 z.contains("baidu")

3:数组的连接

#通过操作符“++”连接数和
val arr1 = array(1, 2, 3)
val arr2= array(4, 5, 6)
val arr3 = arr1 ++ arr2
#通过concat()方法连接数组
import array._
val arr4 = concat(arrl, arr2)

4:if语句

1:if...

2:if...else...

3: if...elif...else...

4:

if...

        if...else

else...

5:if判断

if判断
1f(布尔表达式)(若布尔表达式为true,则执行该语句块4语句
12(布尔表达式)(若布尔表达式为trus,则执行该语句块)1f.le句
 lse|若布尔表达式为fa)se,则执行该语句块)
 icelse it else语句布尔表达式1:1
若布尔表达式1为1rue,则执行该语句块
)eise tf布尔表达式211
若布尔表达式2为true,则执行该语句块
)else it(布尔表达式3)(
若布东表达式3为zr0,则执行该语句块
} else i
若以上市尔表达式都为false,则执行该语句块
 if.else套语句
 f(布尔表达式1)ft布尔表达式2;(
若布尔表达式2为true,则执行该语句块}e_se if(布尔表达式3)|
若布尔表达式3为true,则执行该语句块
)else{
若布尔表达式2为falae且布尔表达式3为fal
else(
    以上false则执行该语句块

6for循环

var i,j= 0;
for(i <-1 to 2){
    for(j<- 1 to 2)
        println("("+i+","+j+")")
}

7:定义列表

定义string类型的列
 val fruit: list[string] = list("apple", "pears", "oranges")
#定义int类型的列表
 val nums: list[int]= list(1, 2, 3, 4, 5)
#定义double类型的列表
 val double_nums: list[double] = list(1.0, 2.5, 3.3)
#定义nothing类型的列表
 val empty: list[nothing] = list()
#根据初值自动推断列表的数据类型
val fruit2 = list("apple", "pears", "oranges")

8,定义与使用集合

def head: a
获取集合的第一个元素
 def init: set[a]
返回所有元素,除了最后一个
 def last:a
获取集合的最后一个元素
 def tail: set[a]
返回所有元素,除了第一个
 def+(elems: a): set[a]
合并两个集合
 def take(n: int): list[a]
获取列表前n个元素
 def contains(elem: any): boolean
判断集合中是否包含指定元素

9,映射

映射(map)是一种可迭代的键值对结构,所有值都可以通过键获取,并且映射中键都是唯一的,定义如图2-31所示。
 scala> val person: map[string, int]=map("john"->21,"betty"->20,"mike"->22)person: map[string, int] = map(john .> 21, betty -> 20, mike .> 22)

10元组

元组(tuple)是一种类似于列表的结构,但与列表不同的是,元组可以包含不同类的元素。元组的值是通过将单个的值包含在圆括号中构成的。

11,函数组合器

map

foreach

filter

fatten

flatmap

groupby

12scala定义类

class point(xc: int, yc: int){
    var x: int= xc var y: int = yc
    def move(dx: int, dy: int){
        x=x+dx 
        y=y -dy
        println("x轴的坐标为:"+x)
        printin("y轴的坐标为:"+y)
    }
}

13scala读写文件

写文件

import java.io._
 val pw = new printwriter(new file("/opt/test.txt"))

pw.printin(i am learning scalay
#也可以使用write()方法写入数据,pw.write("iamlearningscala")
 pw.close

import scala.io.source
source. fromfile("/opt/test.txt").foreach(print)

14创建rdd

1:parallelize()

定义一个数
 val data = array(1, 2, 3, 4, 5)
#使用parallelize()方法创建rdd 
val distdata = sc. parallelize(data)
#查看rdd默认分区个数
 distdata.partitions.size
#设置分区个数为4后创建rdd
 val distdata = sc.parallelize(data, 4)
#再次查看rdd分区个数
distdata.partitions.size

2:make()

定义一个序列seq
valseq-seq((1,seq("iteblog.com","sparkhosil.com")),
(3,seq("itebolg.com","sparkhost2.com";i,
(2,scq("itebloq.com","sparkhost3.com")))
#使用makerdd()方法创建rdd val iteblog - sc.makerdd(seq)
查看rdd的值
iteblog.collect
#查看分区个数
iteblog.partitioner iteblog.partitions.size
#根据位置信息查看每一个分区的值
iteblog.preferredlocations(iteblog.partitions(0))
iteblog.preferredlocations(iteblog.partitions(1))
iteblog.preferredlocations(iteblog.partitions(2))

3:外部创建rdd

hdfs

linux

14map()方法的使用

#创建rd
 val distdata = sc.parallelize(list(1, 3, 45, 3, 76))

#map()方法求平方值
val sq_dist = distdata. map(x =>x* x)

15sortby()方法

创建rdd
 val data = sc. parallelize(list((1, 3), (45, 3), (7, 6)))

#使用sortby()方法对元组的第二个值进行降序排序,分区个数设置为1

val sort_data = data.sortby(x=> x._2, false, 1)

16:collect()方法

#查看sq_dist 和 sort_data的结果

sq_dist.collect
sort_data.collect

17flatmap()方法

#创建rdd
 val test = sc.parallelize(list("how are you", "i am fine", "what about you"ll
查看rdd
 test.collect
#使用map分割字符串后,再查看rdd

test.map(x=>x.split("")).collect

#使用flatmap分割字符串后,再查看rdd

test.flatmap(x=>x.split("")).collect

18take()方法

创建rd
 val data = sc.parallelize(1 to 10)
获取rdd的前5个元素
data.take(5)

19,union()方法

#创建rdd
 val rddl = sc.parallelize(list(('a', 1), ('b', 2),('c', 3))

val rdd2 = sc.parallelize(list(('a', 1),('d', 4), ('e', 5))

#通过union()方法合并两个rdd

rddl.union(rdd2).collect

20,fillter()方法

#创建rdd
 val rddl-sc.parallelize(list(('a,11.1b.2),(c',3)))

#通过filter()方法过滤其中每个元组第二个值小于等于1的元素

rddl.filter(_._2>1).collect

rdd1.filter(x=>x._2>1).collect

21,distinct()方法

创建rdd
 val rdd = sc.makerdd(list('a', 1), ('a', 1), ('b', 1), ('c', 1))

使用distinct()方法对rdd进行去重

rdd.distinct().collect

22,创建键值对rdd

创建普通rd
 val rdd asc.parallelizef
        list("this is a test", "how are you", "i am fine", "can you tell me"))
建立键值对rdd
 val words = rdd.map(x=> (x.split("")(0), x))
查看键值对rdd数据
words.collect

23,键值对方法

kes,values

reducebykey

24

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com