关于在sqoop导入数据的时候,数据量变多的解决方案。
Posted gxgd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于在sqoop导入数据的时候,数据量变多的解决方案。相关的知识,希望对你有一定的参考价值。
今天使用sqoop导入一张表,我去查数据库当中的数据量为650条数据,但是我将数据导入到hive表当中的时候出现了563条数据,这就很奇怪了,我以为是数据错了,然后多导入了几次数据发现还是一样的问题。
然后我去查数据字段ID的值然后发现建了主键的数据怎么可能为空的那。然后我去看数据库当中的数据发现,数据在存入的时候不知道加入了什么鬼东西,导致数据从哪一行截断了,导致多出现了三条数据。下面是有问题的字段。
这里我也不知道数据为啥会是这样,我猜想是在导入数据的时候hive默认行的分割符号是按照 的形式导入进来的,到这里遇到了这样的字符就对其按照下一行进行对待将数据截断了。
然后我测试了一直自定义的去指定hive的行的分割符号,使用--lines-terminated-by 指定hive的行的分割符号,但是不幸的是好像这个是不能改的。他会报下面的错误:
上面是sqoop脚本的部分内容,下面是执行完hive之后,hive创建的表,字段之间默认的分割符号。
至此问题得到了解决。
以上是关于关于在sqoop导入数据的时候,数据量变多的解决方案。的主要内容,如果未能解决你的问题,请参考以下文章
Sqoop- sqoop将mysql数据表导入到hive报错(未解决)
使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法
用sqoop将数据从mysql导入hive报错:org.apache.hadoop.mapred.FileAlreadyExistsException: Output