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宇晨棒棒的两位大佬的

Sqoop是一个用于在关系型数据库和Hadoop之间进行数据传输的工具。它的工作原理可以简单概括为以下几个步骤: 1. 连接数据库:首先,Sqoop会使用提供的连接信息(包括数据库URL、用户名和密码)连接到关系型数据库。 2. 选择数据:然后,Sqoop会根据指定的表名或查询语句选择要导入或导出的数据。 3. 数据传输Sqoop会将选定的数据从关系型数据库中提取出来,并将其转换为适合Hadoop处理的格式(如文本文件或Avro文件)。 4. 数据存储:接下来,Sqoop会将转换后的数据存储到Hadoop布式文件系统(HDFS)或其他支持的存储系统(如HBase或Hive)中。 5. 完成任务:最后,Sqoop会返回任务的执行结果,包括导入或导出的数据量、执行时间等信息。 总的来说,Sqoop通过连接数据库、选择数据、数据传输和数据存储等步骤,实现了关系型数据库与Hadoop之间的数据交互。这使得用户可以方便地将关系型数据库中的数据导入到Hadoop中进行析和处理,或将Hadoop中的数据导出到关系型数据库中进行存储和查询。\[1\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [Sqoop基本原理及常用方法](https://blog.csdn.net/weixin_48482704/article/details/109821541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值