文章目录
Sqoop安装配置
下载地址
官网下载地址:https://archive.apache.org/dist/sqoop/1.4.7/
安装配置
shell
# 解压
[root@hadoop04 sqoop1.4.7]# tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
# 修改配置 conf目录
[root@hadoop04 sqoop1.4.7]# mv sqoop-env-template.sh sqoop-env-sh
## 配置环境变量
[root@hadoop04 sqoop1.4.7]# vim /etc/profile
## 将mysql-connector-java-8.0.16.jar 以及commons-lang-2.6.jar传入lib目录
数据导入:MYSQL->HDFS
shell
# mysql建表
CREATE TABLE `user` (
`id` int DEFAULT NULL,
`name` varchar(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
# 全量导入
# --delete-target-dir 如果存在目录就删除,不删除hdfs会报错
## --num-mappers 导出hdfs会产生mapreduce任务 默认是4
# --fields-terminated-by 生成到hdfs时文件的换行符
sqoop import --connect jdbc:mysql://ip:port/test?serverTimezone=UTC --username root --password 123456 --table user --target-dir /sqoopout --delete-target-dir --num-mappers 1 --fields-terminated-by '\t'
# 查看HDFS
[root@hadoop04 sqoop1.4.7]# hdfs dfs -cat /sqoopout/*
1 test
2 tom
3 jerry
## 查询导入 $CONDITIONS必须带上
sqoop import --connect jdbc:mysql://ip:port/test?serverTimezone=UTC --username root --password 123456 --target-dir /sqoopout2 --delete-target-dir --num-mappers 1 --fields-terminated-by '\t' --query 'select id,name from user where id > 1 and $CONDITIONS'
# 查看HDFS
[root@hadoop04 sqoop1.4.7]# hdfs dfs -cat /sqoopout2/*
2 tom
3 jerry
# 如果表中有null字段可以给出默认值,一般后期都会导入到数据仓库hive中,对于hive而言\N才能识别为null,--null-string '\\N'
# --null-string 对于null字符串
# --null-non-string 对于非null的列
sqoop import --connect jdbc:mysql://ip:port/test?serverTimezone=UTC --username root --password 123456 --table user --target-dir /sqoopout --delete-target-dir --num-mappers 1 --fields-terminated-by '\t' --null-string 'default' --null-non-string '0'
数据导出:HDFS->MYSQL
shell
# 导出 user2必须提前创建好
# --export-dir 指定需要导出的hdfs目录
sqoop export --connect jdbc:mysql://ip:port/test?serverTimezone=UTC --username root --password 123456 --table user2 --export-dir /sqoopout --input-fields-terminated-by '\t'
# 查看导出目录的内容
[root@hadoop04 sqoop1.4.7]# hdfs dfs -cat /sqoopout/*
1 test
2 tom
3 jerry
0 cassy
4 default
# 查看mysql数据库
mysql> select *from user2;
+------+---------+
| id | name |
+------+---------+
| 1 | test |
| 2 | tom |
| 3 | jerry |
| 4 | default |
| 0 | cassy |
# 导入时不存在则新增,存在则更新
sqoop export --connect jdbc:mysql://ip:port/test?serverTimezone=UTC --username root --password 123456 --table user2 --export-dir /sqoopout --input-fields-terminated-by '\t' --update-key id --update-mode allowinsert