在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Hadoop中TeraSort修改后输出翻倍异常怎么办

132次阅读
没有评论

共计 1004 个字符,预计需要花费 3 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 Hadoop 中 TeraSort 修改后输出翻倍异常怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

  简而言之,就是在修改了TeraInputFormat.java 之后,运行 TeraSort 所得到的输出数据不同程度的翻倍,刚开始并没有什么头绪,并且把采样的线程和Map 的读入搞混了,逻辑不清晰,导致很多时间都在无关紧要的地方反复调试.

  其实应该可以想到一种办法,就是在 MapTask 里设断点观察,但不知道是自己懒还是因为对隐藏在深处的MapTask 有一种畏惧心里,起初我并没有仔细进去看,后来在MapTask 里RecordReader 部分的 nextKeyValue() 方法里设置变量计数并输出,来观察每次 split 所获取的记录条数,结果发现,我的每个 split 都完整的获取了整个(注意是整个输入文件)而不是一个 split 大小的记录,所以输出也随着翻倍了.

  那么关键点找出来了,问题出在哪里呢?MapTask 部分是Hadoop 默认绑定的,TeraSort 并没有重写,所以这部分不可能出错;TeraInputFormat 的前半部分是取样部分,问题不可能出在这里;后半部分的 RecordReader 的 initialize 部分和修改前基本无变化,那错误的部分一定是在 nextKeyValue() 部分了,于是一行一行分析,最终锁定了这一句:

newSize = in.readLine(record);

  很普通的读取一行记录,那有没有可能是 readLine() 这个方法对长度没有限定呢?虽然 nextKeyValue() 方法是 split 对象调用的,但会不会 readLine() 并不理会你每个 split 块的大小而是一股气往下读取直到读到文件末尾呢?

  为了验证这个可能,我添加了全局变量:    

long recordLen;
// 将下面这句加在 nextKeyValue() 中
recordLen += newSize;

  来记录读取记录的总长度,,并设定当

if(recordLen >= split.getLength){
 return false;
}

  修改后打 jar 包放到节点上运行,结果正确!!!

看完了这篇文章,相信你对“Hadoop 中 TeraSort 修改后输出翻倍异常怎么办”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1004字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 一级α片 | 妞干网在线视频观看 | 偷拍肉窝窝视频在线播放 | 又大又硬又黄的免费视频 | 337p西西人体大胆瓣开下部 | 人人草草 | 最新在线防屏蔽国产一区 | 成 人国产在线观看高清不卡 | 欧美视频在线观看一区 | 久久精品国产第一区二区三区 | 国产精品免费播放 | 少女韩国电视剧在线观看完整 | 韩国免费高清一级毛片性色 | 青草内射中出高潮 | 色综合久久久久综合体桃花网 | 在线观看丝袜国产 | 国产美女精品久久久久中文 | 精品伊人久久大香线蕉网站 | 久久精品中文闷骚内射 | 久热这里只精品99re8久 | 欧美在线中文字幕 | 亚洲中文字幕乱码av波多ji | 黄色a一级视频 | 久久婷婷一区二区三区 | 三年片大全在线观看免费观看大全 | 国产片a国产片免费看视频 国产片久久 | 产精品无码久久_亚洲国产精 | 亚洲综合天堂av网站在线观看 | 国产亚洲精品久久久久久久 | 婷婷影院在线综合免费视频 | 多毛小伙内射老太婆 | 亚洲欧美日韩精品永久在线 | 高潮迭起av乳颜射后入 | 国产成人爱情动作片在线观看 | 日韩免费高清视频网站 | 成人小视频在线免费观看 | 狠狠操夜夜操 | 欧美va在线播放免费观看 | 女人被爽到呻吟gif动态图视看 | 久久精品国产亚洲av高清漫画 | 国产成人亚洲精品狼色在线 |