sqoop import 导入到hive后数据量变多的问题

在使用sqoop import从postgresql导入数据到hive时,遇到数据行数增加的情况。原本3698条数据,导入后变为3938条。问题在于参数的设置,调整为或指定合适的split-by字段可以解决问题。切分字段不连续或非有序导致数据重复是数据增多的原因。解决方案包括不切分或选择有序的split-by字段。
摘要由CSDN通过智能技术生成

使用sqoop import 命令从postgresql导入数据到hive中,发现数据行数变多了,但是任务没有跑错,非常奇怪。

导入语句为:

sqoop import 
--connect jdbc:postgresql://*.*.*.*:5432/database_name 
--username name111 
--password password111 
--table table111 
--hive-import 
--hive-database database111 
--hive-table hive_table111 
--hive-overwrite 
--delete-target-dir 
--hive-drop-import-delims  
--null-string ''
 --null-non-string '' 
 -m5

导入前pgsql数据量为3698条,但是导入后再hive中的数据量为3938,数据竟然变多了。最后发现将参数-m5,改为-m1即可解决问题。

为什么呢?

我们先来了解一下参数-m的含义以及sqoop导入的原理。

首先用户输入一个 Sqoop import 命令,Sqoop 会从关系型数据库中获取元数据信息,比如要操作数据库表的 schema是什么样子,这个表有哪些字段,这些字段都是什么数据类型等。它获取这些信息之后,会将输入命令转化为基于 Map 的 MapReduce作业,这样 MapReduce作业中有很多 Map 任务,每个 Map 任务从数据库中读取一片数据,这样多个 Map 任务实现并发的拷贝,把整个数据快速的拷贝到 HDFS 上。

而决

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值