4 h* _" z3 E& p* l ' t. h0 C% e# m2 k }* V1 w5 F( A2 \4 Z2 M- C% v* ?' H7 C+ a9 m. y
/ G0 U5 j6 `( v; m* ~3 }" [Hadoop自带的Partitioner的实现有两种,一种为HashPartitioner, 默认的分区方式,计算公式 hash(key)%reducernum,另一种为TotalOrderPartitioner, 为排序作业创建分区,分区中数据的范围需要通过分区文件来指定。: P. i9 t9 g5 Q. D9 f
4 S' z- b- |2 @9 D( u) C2 o3 H : o+ C3 K' H D) h2 i; u. c7 s * f/ Y4 L6 D8 c$ |% i8 L0 e- t+ X: n, C. g
9 o$ X; C. U1 p: d很多初学者,对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:199427210,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系- b& R! {" l0 ]. O4 k/ u
! x7 n' R! l& h. ]/ U
, T _2 o8 ~* D8 ]' q( L分区文件可以人为创建,如采用等距区间,如果数据分布不均匀导致作业完成时间受限于个别reduce任务完成时间的影响。1 v; l+ [7 Y' l3 R. N( v
/ C& G6 M1 \$ Y8 q9 P* [) R9 U* }* {# |/ N
也可以通过抽样器,先对数据进行抽样,根据数据分布生成分区文件,避免数据倾斜。1 P2 u2 O( H! r: K& H
' g* C8 t# H0 x1 y- \ `7 x4 U 6 s0 P& x' s1 I8 ]注意,key可以是数字型,也可以是BinaryComparable(字符串),当是BinaryComparable时,则以key构造Trie Tree;否则以二分查找来确定key的所属区间。* S% S" F/ d2 [3 p
2 {' J3 i( r! O, V' C$ \5 w m$ ]. M