zoukankan      html  css  js  c++  java
  • 总结的MR中连接操作

    1 reduce side join
    在map端加上标记, 在reduce容器保存,然后作笛卡尔积
    缺点: 有可能oom

    2 map side join
     2.1 利用内存和分布式缓存,也有oom风险
     2.2 自己的想法,参考hive桶的思路,
      第一次MR,将两个文件相同的方法分文件输出并打上标记,排序输出,尽可能分的比较均匀
      第二次MR 改写输入方法,将相同标记的多个分片打包传给map, 改写读的方法,用数组或者列表保存文件流,利用多个文件多路归并思想,使整个大分片按照有序的方法传给map,
    MAP方法中,保存当前的连接key, 然后用容器分标示保存连接key,每次有新的连接key进来,判断是否与上一个连接key相同,如果不同,则输出 容器的笛卡尔积, 否则则添加进容器
      优点: 减少笛卡尔积,分片打包时,如果有个标示没有,整个分片都可以丢掉,减少判断
      缺点: 如果连接key过多, 还是有oom风险.

      改进思路,在文件读取时,根据文件读取相同标示的分片内容(首选文件小的),Map中保存, 读完再读取另外一个文件标示下的文件,如果连接key相同,则和容器中保存的值做连接输出,一直读到不同的key为止,继续连续读上一个标示的key
      优点: 减少了一个容器来做笛卡尔积,只用保存小的标示文件,然后和大文件做笛卡尔积
      缺点: 如果小文件单个key的数量很大, 还是会有oom风险

    3 半连接
      主要利用过滤,将要文件中要关联的字段抽取出来,保存成一个文件, 利用分布式缓存读入内存过滤,如果文件过大可以利用bloomfile, 可能牺牲了一点精确度,但是在reduce端还是会过滤
      风险: 还是有oop风险

  • 相关阅读:
    洛谷P1002 过河卒
    XAF 接口和BOModel<DC翻译博客四>
    XAF DC中的关联<DC翻译博客三>
    XAF 组合关联<DC翻译博客十一>
    XAF 转换不同应用程序模型
    XAF How to: Implement Domain Components(如何实现领域构件)
    XAF 对基库的思考<DC翻译博客五>
    XAF–The State of Domain Components Technology in V2010 Vol 2
    Xpand Easy Sequential numbers(易用的序列号)
    XAF 如何实现批量更改多列多行单元格的值
  • 原文地址:https://www.cnblogs.com/chengxin1982/p/3983667.html
Copyright © 2011-2022 走看看