zoukankan      html  css  js  c++  java
  • 班课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(一共查到了多少文档/在所有文档中几个文档中包含了关键词)

  • 相关阅读:
    《ML in Action》笔记(2) —— ID3决策树
    《ML in Action》笔记(1) —— kNN分类器
    MYSQL笔记
    Javascript代码摘录
    初试mysql存储过程&触发器
    百度地图API应用实践(一) —— 栅格图(草稿)
    2020年8月9日, 网吧, 歌单, 极客时间, 龙岩网络图书馆, 正则, WPS, Python
    2020年8月3日, 网吧 ,
    2020年7月13日,想在网吧搞学习,实属想多了
    账号被盗,什么原因呢?是我的操作系统太脆弱,还是博客园存在安全隐患?
  • 原文地址:https://www.cnblogs.com/eleni/p/13227259.html
Copyright © 2011-2022 走看看