Sqoop安装及使用
1. Sqoop 安装
1.1 下载Sqoop
1.2 上传和解压jar包
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
1.3 相关配置
1.3.1 环境变量配置
编辑/etc/profile文件
添加内容如下
涮新配置文件使其生效
source /etc/profile
1.3.2 Sqoop配置文件修改
进入到Sqoop安装目录中的conf目录,将将sqoop-env-template.sh复制一份,并取名为sqoop-env.sh
修改其中内容:
export HADOOP_COMMON_HOME=/home/xh/hadoop/hadoop-2.7.7
export HADOOP_MAPRED_HOME=/home/xh/hadoop/hadoop-2.7.7
export HIVE_HOME=/home/xh/hadoop/apache-hive-2.3.6-bin
即,hadoop安装目录,hive安装目录。
1.3.3 将MySQL驱动包上载到Sqoop的lib下
即mysql-connector-java-5.1.5.jar jar包,配置符合自己版本的jar包。
2. 使用Sqoop
2.1 使用help命令
2.2 查看MYSQL数据库中所有表
sqoop list-tables \
--username root \
--password 'assiduity' \
--connect jdbc:mysql://192.168.240.128:3306/test?characterEncoding=UTF-8
2.3 MYSQL表数据到HDFS中
sqoop import \
--connect jdbc:mysql://192.168.240.128:3306/test?characterEncoding=UTF-8 \ ## 指定连接mysql的数据库地址
--driver com.mysql.jdbc.Driver \ ## 指定mysql的驱动
--username root \ ## 用户名
--password assiduity \ ## 密码
--table student \ ## 指定 表
--target-dir hdfs://192.168.240.128:9000/student \ ## 指定hdfs目录,如果不存在会自己创建
-- m 1
指定条件,只有符合条件的才能被导入
限定行条件
sqoop import \
--connect jdbc:mysql://192.168.240.128:3306/test?characterEncoding=UTF-8 \
--driver com.mysql.jdbc.Driver \
--username root \
--password assiduity \
--table student \
--target-dir hdfs://192.168.240.128:9000/student3 \
--where "id > 2" \
-- m 1 ## 开启map个数,即进程
限定列
sqoop import \
--connect jdbc:mysql://192.168.240.128:3306/test?characterEncoding=UTF-8 \
--driver com.mysql.jdbc.Driver \
--username root \
--password assiduity \
--table student \
--target-dir hdfs://192.168.240.128:9000/student4 \
--columns "id,name" \
--as-avrodatafile # 指定存成 avro 数据文件
-- m 1 # 开启map个数,即进程
条件必须使用引号。
2.4 HDFS 导出向 RDBMS
2.4.1 HDFS 导出向 RDBMS
sqoop export \
--connect jdbc:mysql://192.168.240.128:3306/test?characterEncoding=UTF-8 \
--driver com.mysql.jdbc.Driver \
--username root \
--password assiduity \
--export-dir hdfs://192.168.240.128:9000/student \ # HDFS source path for the export
--table student_info # 目标表
2.4.2 删除RDBMS 中表的数据
sqoop eval \
--connect jdbc:mysql://192.168.240.128:3306/test?characterEncoding=UTF-8 \
--driver com.mysql.jdbc.Driver \
--username root \
--password assiduity \
--query "delete from student_info"