Sqoop 基本原理

什么是Sqoop?

什么是Sqoop?
sqoop其实是一个桥梁,主要在关系型数据库和Hadoop之间进行数据传输,进行数据的导入和导出

关系图

导出和导入

架构图

这里写图片描述

Sqoop数据传输

RDBMS ->HDFS

mysql到hdfs通过sqoop进行数据传输 分两种,一是只支持新增不支持更新、二是 可以修改和新增

incremental append

	 只支持新增不支持更新
sqoop import \
--connect jdbc:mysql://ip:3306/ databasename \
--username  root \
--password 密码 \
--query "select sid,student_id,course_id,score from score where \$CONDITIONS" \
--target-dir /xxx/xxx \
--split-by sid \
-m 2 \
--check-column sid \
--incremental append \
--last-value 0

解释:

sqoop import
–connect jdbc:mysql://ip:3306/databasename \ 读取数据库表明databasename
–username root #用户名
–password 123456 #密码
–query+sql 最后要加$CONDITION ,哪怕只有一个maptask
–target-dir /path #指的是hdfs中导入表的存放目录
–split-by sid \ 可以理解为分区
-m 2 #并发的map数量2,如果 m 为 1,就不要写split-by
–check-column:column_id #指定增量导入时的参考列
–incremental append #增量导入
–last-value:num #上一次导入column_id的最后一个值

注:

–split-by 和 -m 结合实现numberReduceTasks并行
–check-column 和 --last-value 结合实现–check-column : where ** >value,第二次运行的结果value值是上一次全量导入后的下边界值,第一次为 0.

incremental lastmodified

 可以修改和新增 
sqoop import \
--connect jdbc:mysql://ip:3306/ databasename \
--username  root \
--password 密码 \
--query "select id,name,time from lmtest where \$CONDITIONS" \
--target-dir /xxx/xxx \
--check-column time \
--incremental lastmodified \
--merge-key id \ 
--last-value "2020-11-20 17:24:28"

解释:

与append不同点:
–last-value 的值是表示的时间到当前系统的时间的时间段
merge 合并
–check-column 必须为timetamp类型

MYSQL->HBASE

(实例)

  1. 先在hbase内建表
    命令如下:
create 'stu:mysql_stu','info','score'
  1. sqoop导入
sqoop import \
--connect jdbc:mysql://single:3306/kbmysqltest \
--username root \
--password **** \
--table score \
--hbase-table kb10:mysql_stu \
--column-family score \
--hbase-create-table \
--hbase-row-key sid \
--hbase-bulkload

解释:

  1. import 表示从关系型数据库里传数据给hbase
  2. 连接mysql里的数据库kbmysqltest
  3. 用户名
  4. 密码
  5. 连接数据库kbmysqltest的表score
  6. hbase-table 表示连接hbase 的表mysql_stu
  7. 列族
  8. hbase中如果表不存在则创建表
  9. 指定row-key
    10.不用指定输出的路径,数据自动转移

结果展示:
在这里插入图片描述

Sqoop job

常用命令

  1. 创建命令
 sqoop job \
 --create jobname \
 -- import \
  1. 查看job列表
sqoop job --list

  1. 查看详细信息
sqoop job --show jobname

  1. 执行
sqoop job --exec jobname
  1. 删除
sqoop job --delete jobname

注:架构图是copy 安静的技术控,关系图是copy宇晨棒棒的两位大佬的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值