& `# g2 {# c5 i o# V7 q
0 Q0 b4 u" u4 f% ~( L
" x z3 E% n0 W0 a: W# r
; l2 y5 u# A8 R+ G' O; o+ p* W$ C
8 W( \7 ~- h6 a8 [2 u! b. u
Hadoop自带的Partitioner的实现有两种,一种为HashPartitioner, 默认的分区方式,计算公式 hash(key)%reducernum,另一种为TotalOrderPartitioner, 为排序作业创建分区,分区中数据的范围需要通过分区文件来指定。 1 g# @- C. }# q( T8 e6 V 6 C$ _' m1 l1 f. D8 R4 R0 Q, e7 \: z! a
/ L b+ q6 E4 g' V8 @4 u
- J& p5 j" M/ P8 U9 g, p) ?
2 N, p# Q6 y- ]很多初学者,对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:199427210,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系- K5 d+ E r- _0 I/ Y
^7 ^, Q/ j2 ]* G; }; j% Q9 ^9 G# @8 Z/ F! j; C% {0 f
分区文件可以人为创建,如采用等距区间,如果数据分布不均匀导致作业完成时间受限于个别reduce任务完成时间的影响。 1 {* O& r( A& b C8 Z+ q3 v+ M. E+ S% P/ u! ~9 v1 k+ O
; k9 f4 f( e/ h- k5 B* A也可以通过抽样器,先对数据进行抽样,根据数据分布生成分区文件,避免数据倾斜。 : N% Z2 n, J* n, T. h) ?1 s7 d" Q# k; }- Z& |- V
5 F8 _" J- }8 W" J+ N- T" y: s
注意,key可以是数字型,也可以是BinaryComparable(字符串),当是BinaryComparable时,则以key构造Trie Tree;否则以二分查找来确定key的所属区间。 . m1 u8 [+ v1 V4 a' A! \ 5 F2 s) Y5 O& W7 z5 o) T2 T o1 B7 t6 J3 X- V1 Q) B6 `( t
二单词共现矩阵算法9 K6 D/ f+ M4 S ]; E# s+ l, C G7 \