Sqoop数据迁移

Sqoop:SQL to Hadoop 作用:批量的将关系型数据库的数据迁入和迁出的工具,

将需要将关系型数据库(oracle、mysql)的数据迁入到hdfs上,通过pig或者hive查询

sqoop架构

Sqoop使用的是hadoop的一套架构mapreduce来完成所有的工作,在使用sqoop迁移数据的时候,性能取决于mapreduce的执行情况.下图是sqoop基本架构

  1. 使用sqoop数据迁移

Sqoop help import / sqoop help export 可以查看到sqoop下面的一些命令使用情况

Eg:mysql

Sqoop list-databases --connect jdbc.mysql://hadoop01/db1 -- username root --password root

其中:list-databases 列出所有的数据库

  1. 一般的命令语句

Sqoop import

--connect ...

--username ...

--password...

--table tableName(迁移表的名称)

--target-dir /user/hive/warehouse/test(目标库)

--m 16(mr的个数,控制并行度)

--split by(分割字段)

--field-terminated--by <自定义字段分割符号>

--lines-terminated-by <自定义终止符>

--as-avrodatafile/sequemcefile/textfile/输出的文件的集中格式

--query ‘select * from a’

--fetch-size 100

Eg:

sqoop import --connect jdbc:oracle:thin:@//hadoop01:1521/orcl --username sqoop --password sqoop --fields-terminated-by '\\001' --target-dir /user/hive/warehouse/test -m 10  --query "select /*+parallel(t,9)*/ * from test  where date <= to_date(2001-01-01','yyyy-mm-dd') and id>100   --fetch-size 10

注意:

  1. 迁移的时候按照增量方式进行迁移,表中的字段需要都列出来,切记不能使用*,要么会覆盖原来迁移的数据;
  2. 对于oracle迁移的时候,一个mapreduce的最大数据是2的31次方-1数据量,如果一个map的数据量超过这个会造成迁移数据丢失;
  3. 针对上面出现的情况,可以将数据打伞,选取split的字段的差值不要过大,避免造成数据倾斜。
  4. Map的合理设置有利于提高sqoop迁移的效率;
  5. 对于不同的数据库在取数据的时候都可以开并行,加速数据的迁移;eg:oracle/*+parallel(t,9)+*/

      6、对于不同数据库迁移数据,sqoop help import 介绍很详细的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值