解决sqoop import 导入到hive后数据量变多的问题
使用sqoop import 命令从postgresql导入数据到hive中,发现数据行数变多了,但是任务没有跑错,非常奇怪。我们先来了解一下参数-m的含义以及sqoop导入的原理。而决定切分成多少个map就是参数-m的作用,-m5代表切分为5个map,-m1代表切分为1个map,即不用切分。split-by 根据不同的参数类型有不同的切分方法,如int型,Sqoop会取最大和最小split-by字段值,然后根据传入的num-mappers来 确定划分几个区域。这是因为,用来切分的字段不友好,不是int型或者有排序规律的。一是将 -m5 改成 -m1 直接不切分;二是 --split-by制定另外的字段,换一个int型的或者有明确排序顺序的字段。上面是sqoop脚本的部分内容,下面是执行完hive之后,hive创建的表,字段之间默认的分割符号。至此问题得到了解决。
下载地址
用户评论