1、Sqoop基本概述
- Sqoop:关系型数据库和HDFS/HIVE/HBASE的导入导出工具;
(1)Sqoop内部操作流程
①、编写sqoop导入/导出指令,
②、Hadoop将Sqoop指令翻译成MR程序,里面只包含Map阶段
③、运行在Hadoop分布式集群,操作HDFS/HBASE/HIVE进行数据写入/写出
④、给客户端反馈操作后的结果;
(2)Sqoop生成的MR程序,只有Map阶段,没有Reduce阶段
原因:纯粹的数据迁移,不涉及到聚合操作,没必要使用reduce
(3)数据迁入与数据迁出
①数据迁入:RDBMS --》 HDFS/HIVE/HBASE
②数据迁出:HDFS/HIVE/HBASE --》 RDBMS
2、Sqoop常用命令
sqoop help #查看sqoop常用命令
sqoop help import #查看import常用参数
sqoop help export #查看export常用参数
选项 | 含义说明 | 范例 |
---|---|---|
–connect | 指定JDBC连接字符串 | |
–connection-manager | 指定要连接的管理器类 | |
–driver | 指定要使用的JDBC驱动类 | |
–hadoop-mapred-home
| 指定$HADOOP_MAPRED_HOME路径 | |
–help | 帮助 | |
-password-file | 设置用于存放认证密码信息文件的路径 | |
-P | 从控制台读取输入密码 | |
–passward | 设置认证密码 | |
–username | 设置认证用户 | |
–verbose | 打印出详细的运行信息 | |
last-value |
3、Sqoop Job
- 数仓项目部署阶段:将反复执行的程序订制成一个Job,通过定时器反复执行;
sqoop job --list #查看现有的job
sqoop job --create #创建job
sqoop job --drop #删除job
sqoop job -exec jobname #执行job
注意点:
①需要在定时器中反复执行的sqoop指令一般封装在sqoop job中;
②job中封装了sqoop操作的详情(import,export);
③有增量导入的需求,必须将sqoop操作封装到job中,否则,增量导入的最新字段就无法存储,就会从头开始导入
1、该脚本时创建sqoop的job脚本,原则上只需要执行一次即可,以后每次执行,只需要执行sqoop job -exec jobname;
2、如过需要重新运行,则运行方式:脚本名称.sh
- 查看增量导入历史值
在.sqoop目录下,查看metastore.db.script的文件
4、Sqoop在正式环境的用法
4.1、编写shell脚本
sqoop import
--connect \
--username $1 \
--passward $2 \
--table \
--target-dir \
--delete-target-dir \
-m $3
4.2、调用Sqoop脚本,通过给shell脚本传递参数,动态指定脚本中的参数值
sh sqoop-import.sh root 88888888 3