班课4

1. FlatMap要求传入的函数是一个集合,将输入的所有list打散放入同一个list中输出

2. Filter返回一个Boolean,collect之后打印符合条件的

3. ReduceByKey将key相同的元素根据需求合并起来,如将相同Key对应的Value相加

rdd.reduceByKey(lambda x,y:x+y).collect()

4. HDFS-Erasure coding

原始的同一个block分别存储三次花费太高

Erasure coding的中心思想是将其矩阵乘法存储三次,任何一个机器失效都可以通过另外两个推算出所需要的数据

(6,3) reed solomon

G由6*6的单位阵(左上角到右下角为1,别的部分为0)与自己拟定的3*6的code组成9*6的函数

X是所需存储的六个data的倒置,即一个6*1的函数

二者相乘得到一个9*1的函数P,即前六个仍为所要存储的数据,称为raw data,后面三个是新得到的称为parities

如果出现机器失效,则对目前剩余的G'求逆,然后乘以目前剩下的P‘得到X

求逆的时候,在矩阵的旁边添加一个行数列数相等的单位阵,经过变化将左边转化为单位阵。可以进行的操作是某一排统一乘一个数,或者某一排加到另一排中,又或者某两排进行交换

丢3台以上找不回来

5. 每一个block被竖着分为200个cell(因为每一个cell64KB,一个block128MB)

所有将要存储的文件均分为一个个的cell,从左到右从上到下依次存入block,没存6个cell就多存储三个作为parties以便计算并恢复丢失的data(竖着是一个block,横着是一个strip)

6. block group的信息被存储在NameNode里面

7. ES写的时候是parallel write,即同时写进,最多容忍三个数据丢失

读的时候同时读取,读的时候若一个机器失效,随机读取另一个机器进行恢复

8. MapReduce的data structure是key-value pairs

9. MR工作的时候分为MapTask与ReduceTask两个阶段

MapTask将output写在当地disk里面,Map可以立马得到结果,一旦任务完成map output可以被清理

10. 输入进来的HDFS文件首先进行切片,每一片存入一个mapper进行map,这一步在自己的电脑中进行,然后shuffle(key一样的聚合,对Key排序)然后进行reduce

11. partition决定每个reducer处理多少数据,保证效率

12. MR的切片

一片类比一个block,每一片大小相同,每一片对应一个map task,且一片的大小等于block的大小(若不相同,一个block传输过来不能分给同一个map task)

13. MR的shuffle聚合Key一样的且对Key排序,结果传给reducer

14. combiner默认没有,有的话载map之后,shuffle之前,可理解为reducer

15. RDD的partition:很大的RDD会被拆分成很多小的tasks发送到不同的executor进行计算,而不用每一个数据都给一个executor,提高效率。若从HDFS读入数据,切片数等于切片数,使用parallel则手动规定分区(Hash partitioner:若分成三个区对每一个数据取hashcode,可以理解为随机数,然后用随机数除3取余数,根据余数分配到不同的区),有可能有的区是空的

16. 查看分区

rdd.getNumPartitions()

17. 按照分区打印

rdd.glom().collect()

18. spark的任务划分

一个分区对应一个task

RDD的wide transformation即涉及到shuffle的操作,如sortBy等一般都可以手动输入一参数numTask, 这个数对应着新的RDD分区的,不传参数则分区数不会进行改变

19. combineByKey需要传入三个参数,createCombiner对分区内第一次遇到某一个Key时进行的操作(如第一次遇见key=1要进行该操作,第一次碰见key=3要重复该操作),mergeValue对于相同的Key在调用完createCombiner之后在分区内调用的函数,而mergeCombiner是分区之间调用的函数

20. 含有shuffle的RDD会很慢,故而可以一次shuffle的就不要两次

先filter后map,可以减少map的次数,如果先map数量并没有在map之后减少

分区比不分区好

21. inverted index

即相当于后台的索引表,对每个信息在第几页存在做出统计,查找的时候可以直接调出来,可理解为字典,所以查找所需时间是常熟

对每个信息页数的排序称为posting,如何排序参看的是document ID

如果同时查找两个信息,则分别查找一个信息,然后取交集(MergeSort,时间复杂度O(x+y), x y分别为两个对应posing的长度)

22. term weighting根据相关度打分,关键词在文档的次数tfi*log(一共查到了多少文档/在所有文档中几个文档中包含了关键词)

原文地址:https://www.cnblogs.com/eleni/p/13227259.html