文章目录
- 一、安装
- 1、上传,解压,重命名
- 2、修改环境变量
- 3、修改配置文件
- 4、上传驱动包
- 5、拷贝jar包
- 二、import命令
- 1、将mysql的数据导入到hdfs上
- 2、将mysql的数据导入到hive上
- 3、增量导入数据
- 三、export命令
- 1、从hdfs导出到mysql中
- 2、从hive导出到mysql中
- 四、sqoop的job任务
一、安装
1、上传,解压,重命名
sqoop下载地址
提起码:1234
cd /opt/modules
# 上传
# 解压
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/installs
# 重命名
mv /opt/modules/sqoop-1.4.7.bin__hadoop-2.6.0 /opt/modules/sqoop
2、修改环境变量
export SQOOP_HOME=/opt/installs/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
3、修改配置文件
# 重命名配置文件
mv sqoop-env-template.sh sqoop-env.sh
#添加如下配置:
export HADOOP_COMMON_HOME=/opt/installs/hadoop
export HADOOP_MAPRED_HOME=/opt/installs/hadoop
export HIVE_HOME=/opt/installs/hive
export HCAT_HOME=/opt/installs/hive/hcatalog
4、上传驱动包
将mysql8.0的驱动包放入 sqoop 的 lib 目录下
5、拷贝jar包
cp /opt/installs/hive/lib/commons-lang-2.6.jar /opt/installs/sqoop/lib/
cp /opt/installs/hive/lib/hive-common-3.1.2.jar /opt/installs/sqoop/lib/
二、import命令
1、将mysql的数据导入到hdfs上
sqoop import \
--connect jdbc:mysql://node01:3306/数据库的名字 \
--username root \
--password 123456 \
--table emp \ # 有query 不用指定
--target-dir /hdfs上的路径 \
--delete-target-dir \ #如果hdfs上存在该文件夹就删除
--query 'select * from emp where empno < 7788 and $CONDITIONS' \ # sqoop也支持sql语句
--split-by empno
-m 1
有query的时候sql语句中必须有$CONDITIONS、后面参数必须有split-by或者-m 1
2、将mysql的数据导入到hive上
sqoop import \
--connect jdbc:mysql://node01:3306/数据库的名字 \
--username root \
--password 123456 \
--table emp \
--hive-import \
--hive-overwrite \
--hive-table emp \
--hive-database hive数据库的名字 \
-m 1
3、增量导入数据
两种方式:
1、sql语句加where条件
2、last-value
sqoop import \
--connect jdbc:mysql://node01:3306/数据库的名字\
--username root \
--password 123456 \
--table emp \
--target-dir /sqoop/dt=20240903 \
-m 1 \
--check-column empno \ # 必须写,指定检出的列
--incremental append \ # 增量
--last-value 0 \
--fields-terminated-by '\t' #指定导入数据的分隔符
三、export命令
1、从hdfs导出到mysql中
mysql中的表需要提前创建出来
sqoop export \
--connect jdbc:mysql://node01:3306/mydb01 \
--username root \
--password 123456 \
--table user \
--export-dir '/sqoop/aaa.txt' \
--input-fields-terminated-by ',' \
--columns 'id,age' \ # 指定mysql中的列,要与hdfs文件内容对应
-m 1
2、从hive导出到mysql中
sqoop export \
--connect jdbc:mysql://node01:3306/mydb01 \
--username root \
--password 123456 \
--table user \ # mysql的表
--hcatalog-database mydb01 \ # hive的数据库
--hcatalog-table par3 \ #hive的表
-m 1
四、sqoop的job任务
sqoop job --create jjoobb --sqoop import \
# 编写import代码
sqoop job --exec jjoobb
# 执行job任务
sqoop job --delete jjoobb
# 删除job任务
sqoop job --list
# 查看所有的job任务