美文网首页
hadoop 分片与分块

hadoop 分片与分块

作者: 活着活法 | 来源:发表于2016-11-03 14:37 被阅读0次

    参考:http://blog.csdn.net/dr_guo/article/details/51150278

    Paste_Image.png

    重点概念:

    输入分片(Input Split):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),
    每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组。

    场景具体分析:

    由于 app click show的日志都是 1M 15M的小文件,在hadoop框架中对小文件做了优化,将多个数据合并成一个分片split ,交给mapper处理。
    导致,mapper中 inputSplit.getPath()获取的是多个文件的列表。而 实时ctr代码中,直接取列表的第1个,来做判断,所以出错。

    方案:

    将hadoop默认的优化,进行自定义处理,即在job run之前添加 job.setInputFormatClass(TextInputFormat.class);
    这样,每个小文件,将作为一个独立的分片split, 对应一个独立的 mapper ,你再用inputSplit.getPath()就能得到唯一确定的路径了

    就解决了”click 、show错当成对方“ 的情况。

    相关文章

      网友评论

          本文标题:hadoop 分片与分块

          本文链接:https://www.haomeiwen.com/subject/snobuttx.html