温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样解析MapReduce中的Map输入的分片

发布时间:2021-11-25 17:30:38 来源:亿速云 阅读:131 作者:柒染 栏目:互联网科技

怎样解析MapReduce中的Map输入的分片,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

回顾:

在一个电话面试之中,对方提到了:Map阶段的分片处理。由于在沟通之中有些许紧张,在对方问及:Map分片的算法过程能否简单的描述?这个问题,由于对方选取了 Map算法的用词,一时间思路被诱导了,想到的只有shuffle,以及hash分区,和boolean过滤器等。

而事实上,一个 输入的分片,在MapReduce之中被称为”split“就是单个Map处理的块,每一个Map的操作都只是处理一个输入分片。每个分片被划分为若干个记录,并且,每条记录就是一个键值对。Map一个一个的来处理这些数据。事实上,如果单纯在是否数据一条条来被处理意外,这和Storm是没有多大的区别的。而这里的Split 也就是通常数据处理之中的segment,  一个输入的分片可以对应于同一个表上的若干行。 而一条数据对于与一行。

输入分片被包装称为了一个java 的interface

public interface InputSplit extends Writable
{

    long getLength() throws IOException;
    String[] getLocation() throws IOException

}

通常你也不需要自己来处理这个分片 ,分片是由于 InputFormat来创建的,InputFormat负责产生输入的分片并将他们分割为记录。

另外一个关键的地方是 RecordReader。 RecorderReader 也就是我们所说的记录迭代器。Map任务会用一个记录的迭代器来生产键值队。

而 InputFormat 才是我们真正的的使用类。

Java 代码如下:

public interface IntputFormat<k,v>
{

    InputSplit[] getSplit(JobConf,int numSplits) throws IOException;
    
    RecordReader<k,v> getRecordReader(InputSplit split,JobConf conf,Reporter reporter)
    throws IOExcetion
}

    第一个方法,你可以指定NumSplits,当然很多时候指定是无效的。

    第二个方法,你一句getRecordReader来拿到RecordReader;

    面试的感触:很多时候,技术驱动的公司往往没有产品的思维。更不用说是市场化的逻辑了。

    一个即将被淘汰的组件,却成了面试的重点。

看完上述内容,你们掌握怎样解析MapReduce中的Map输入的分片的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI