• MapReduce的Partition和OutputFormat


    Partition分区

    Partition是用来指定分区规则的,也就是指定shuffle阶段的如何分区,最后按照指定分区会输出和分区个数相同个数的文件

     以达到不同数据的归并的效果

    OutputFormat输出

    OutputFormat可以定义输出路径指定输出文件,及输出规则。

    也就是说其实我们也可以使用OutputFormat自定以达到对输出内容的文件自定

    问题引出

    两者的执行阶段和机制都不同但是对于指定分类数据文件的效果是相同的,都可以完成这种需求 那么我同时执行这两个要求最后是谁优先呢?

    于是我带着疑问同时设置分区规则,也定义了输出规则,执行

    与只定义输出规则结果相同,那么由此推测出,输出规则是具有较大优先级的

    那么既然如此,那为啥还需要有分区规则呢?

    个人理解如下

    因为分区实现其实是提前与Records的 ,发生在shuffle阶段的,也就是说有部分需求是需要我们在Records之前就分好区的,因为我们知道Records在处理数据的时候是拉取相同分区数据进行处理的,那么这里就出现了两者功能的差异性,所以Records的存在是有必要的

    而后我打开数据发现!!!执行同时执行数据最后会缺少数据!!!

    使用分区

    未分区 

     

     这是为什么呢?

    原来每个Records执行完就会调用OutputFormat进行输出,因为我的输出路径是固定的,每次Records调用完之后就会发生覆写,那么我们之前分区内容就全数丢失了。所以才会产生我们看到的数据丢失事件,而后我们对输出路径进行个性化就可以解决了。


    以上就是我对Records和OutputFormat理解了

    如果有错误欢迎留言纠正

  • 相关阅读:
    java面试小经历
    电路知识的回顾
    发现一不错的编程助手 Amazon CodeWhisperer
    23种设计模式-单例设计模式介绍带实战
    Spring Cloud Alibaba —— 服务注册与配置中心
    kube-apiserver资源注册
    私人社交群组平台Zusam
    线程池相关总结
    Android系统设置默认24小时制
    在vue使用wangEditor(简单使用)
  • 原文地址:https://blog.csdn.net/qq_51260764/article/details/127038431