Linux---hadoop方法-----28

spark:是一个主要用作数据分析的模块(数据以RDD为主),其中多了有向无环图,能计算最优路径。
mapReduce (MR)必须编程完成后才能统一提交执行;只能使用java语言编程
RDD:容错性分布数据,SPARK CORE:是spark生态圈的核心,它的任务就是对这些数据进行分布式计算
RDD类型:

1.并行集合(分布式化的数据对象,类比Python中的list),通过代码直接传一个列表进去,进行数据分析。

并行化集合(我们处理的是RDD数据,所有对于集合而言,第一步需要并行化)parallelize(list),可以看到我们的集合已经成功并行化

2.文件系统数据集(Hadoop Datasets,文本文件,如通过sc.textFile()读取数据),在sc.textFile()括号里写上该文件在hadoop里面的路径。
对RDD的操作
变换:( 返回值仍是RDD,但是只有等到Actions操作时才会真正计算给出结果--Lazy Evaluation(懒操作)),执行到该条命令时,只会检测基本语法错误,不计算结果,而是把它保存起来,当你需要把它转换成Python可视化类型时,才会真正执行这条命令,计算出结果。
操作:(返回值是非并行化(不是RDD类型)的数据集合如Python的list),立即执行该变量保存所有的命令(前置条件),并将结果改成可视化类型。 注:如果在执行前置条件时发生错误,报错信息会指向操作行,而不是变换行。


变换(懒操作):在 worker(客户端)运行
map() 循环执行该层列表里每一个元素
flatMap()   循环该列表所有层的元素,如果检测某一个元素是元组列表字典类型,就会去循环执行这个元素里面的元素
filter()过滤 删除
reduce() 相加
reduceByKey()对相同键的值进行操作
groupByKey() 按键进行分组
countByValue():元素出现的次数
操作(actions):立即执行(driver:服务器)
take(n):从RDD返回n个元素
top(num):从RDD返回最大的num个数的元素
first():返回RDD第一个元素
collect():从RDD返回所有元素

count()返回行数

reduce()参数是一个函数,这个函数有两个参数(首先会分区(默认分区数量与虚拟机的核心数有关,我的是2),然后每个分区得出结果最后汇总),两个参数分别是每次分区后两个分区的结果。

map()函数需要一个参数,参数是一个函数,简单理解:将RDD的每一个元素取出,分别通过对这个函数变换之后,返回一个新的RDD。这里使用匿名函数(lambda),给RDD每一个元素执行加一的变换,最后通过collect()操作查看结果

flatMap()

传入的函数的返回值一定要是可迭代的对象(比如元组,集合,列表等)对RDD每一个元素执行函数变换,返回一个迭代器,最后展平结果

filter():参数同样是一个函数,作用是过滤元素,执行过程:将RDD每一个元素执行你书写的条件判断语句,只有结果为True才返回。

union() 合并
intersection()交集
subtract() 差集 1—2公共的,多余的
cartesian()迪卡尔集,第一个跟第二个每一个配一遍,结果以列表形式呈现

加法:

分区:[(1,2),(3,4)]
第一次结果:[3,7]
最后结果:10
减法:
分区:[(1,2),(3,4)]
第一次结果:[-1,-1]
最后结果:0

我们会发现减法分区后的结果会发生变化,分区数量不同导致结果不同。

加法和乘法分区后(元素位置变换)结果相同,减法和除法分区后(元素位置变换)结果不同。所以我们在运用时需注意。

csv文件格式,liunx里最好是csv
textFile
在sortByKey()当参数为False是降序,为True是升序

groupByKey()出来的是一个地址,需要for循环


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值