1. HashPartitioner 是默认的分区器,也可以用别的, 比如TotalOrderPartitioner, 也可以自定义开发。 第一个问题, 先回答为什么要分区 就是数据shuffle过程中的一种打散策略。 Hash散列化是最容易想到的。 2. 在MR当中会用到多次排序过程 特别是map输出到内存再溢写到磁盘时会产生大量的临时文件,这些小文件是不能直接交给Reducer处理的,而要进行一个合并的过程, 这个过程是带着map-key进行操作的 所以要用到归并排序。 在环形缓冲的内存区 使用快排, 原因我还没想到。 (https://blog.csdn.net/u010737756/article/details/114198358 ) 3. 先定义和回顾数据倾斜的概念, 然后再思考join这个过程的实现 (reduce把相同key分组做笛卡尔积) 如果大表小表的差异巨大, 表现为小表的数据量比较少但key却比较集中,导致分发到某一个或几个reduce上的数据比其他reduce多很多,易造成数据倾斜。 常常会采用mapjoin 优化这类问题

相关推荐

ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
牛客网
牛客企业服务