Sqoop 抽数的并行化主要涉及到两个参数:num-mappers:启动N个map来并行导入数据,默认4个;
split-by:按照某一列来切分表的工作单元。
split切分算法默认是根据主键来的:比如map 个数为4,取 ( 主键最大值 - 主键最小值 )/ map 数量 ,这就分成了 4份,如果主键分布不均,那么就会出现数据倾斜。
解决方法
通过ROWNUM() 生成一个严格均匀分布的字段,然后指定为分割字段
Sqoop 抽数的并行化主要涉及到两个参数:num-mappers:启动N个map来并行导入数据,默认4个;
split-by:按照某一列来切分表的工作单元。
split切分算法默认是根据主键来的:比如map 个数为4,取 ( 主键最大值 - 主键最小值 )/ map 数量 ,这就分成了 4份,如果主键分布不均,那么就会出现数据倾斜。
通过ROWNUM() 生成一个严格均匀分布的字段,然后指定为分割字段
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。