1.概述
SQOOP是用于对数据进行导入导出的。
- 把MySQL、Oracle等数据库中的数据导入到HDFS、Hive、HBase中
- 把HDFS、Hive、HBase中的数据导出到MySQL、Oracle等数据库中
2.安装Sqoop
- 解压、设置环境变量,略
- 把mysql………….jar(mysql驱动)放到$SQOOP_HOME/lib中
3.相关操作
(1)把数据从mysql导入到hdfs
sqoop ##sqoop命令
import ##表示导入
--connect jdbc:mysql://ip:3306/sqoop ##告诉jdbc,连接mysql的url
--username root ##连接mysql的用户名
--password admin ##连接mysql的密码
--table mysql1 ##从mysql导出的表名称
--fields-terminated-by '\t' ##指定输出文件中的行的字段分隔符
-m 1 ##复制过程使用1个map作业
--hive-import ##把mysql表数据复制到hive空间中。如果不使用该选项,意味着复制到hdfs中
例子1,全量导入
sqoop import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' --null-string '**' -m 1 --append --hive-import
PS:
参数 | 说明 |
---|---|
–table | mysql中的表名 |
–fields-terminated-by | 数据导入到文件中时以什么为分隔符 |
–null-string | 数据如果是空的,则用指定的符号表示 |
-m | 使用的mapreduce数量 |
–hive-import | 把mysql表数据复制到hive空间中 |
例子2,增量导入
sqoop import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' --null-string '**' -m 1 --append --hive-import --check-column 'TBL_ID' --incremental append --last-value 6
PS:
参数 | 说明 |
---|---|
–table | mysql中的表名 |
–fields-terminated-by | 数据导入到文件中时以什么为分隔符 |
–null-string | 数据如果是空的,则用指定的符号表示 |
-m | 使用的mapreduce数量 |
–hive-import | 把mysql表数据复制到hive空间中 |
–append | 追加内容 |
–check-column | 增量导入时,检查的列(按照哪一列来增量) |
–last-value | 按照某列增量时最后的一个值 |
(2)数据从hdfs导出到mysql
sqoop
export ##表示数据从hive复制到mysql中
--connect jdbc:mysql://ip:3306/sqoop
--username root
--password admin
--table mysql2 ##mysql中的表,即将被导入的表名称
--export-dir '/user/root/warehouse/mysql1' ##hive中被导出的文件目录
--fields-terminated-by '\t' ##hive中被导出的文件字段的分隔符
sqoop export --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table ids --fields-terminated-by '\t' --export-dir '/ids'
PS:
参数 | 说明 |
---|---|
export | 表明是导出操作 |
–table | 导出到Mysql中的哪个表中 |
–fields-terminated-by | HDFS上的文件是以什么分割的 |
–export-dir | HDFS上哪个文件要导出到Mysql中 |
(4)设置为作业,运行作业
sqoop job --create myjob --import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' --null-string '**' -m 1 --append --hive-import
PS:
–create 创建了作业的参数,后边的命令内容就是myjob这个作业所要执行的内容
sqoop job --list
PS:可以查看Sqoop中的job列表