1.下载
https://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
2.上传安装包 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
注意:sqoop安装包的选择,要选择安装包中含有 bin
字符的安装包,否则运行会报错:缺少文件!
使用Xshell工具的xftp插件上传sqoop安装包到usr/local/
3.解压sqoop安装包
#解压安装包
[root@hadoop01 local]#tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
#重命名sqoop目录
[root@hadoop01 local]#mv sqoop-1.4.7 sqoop
4.配置环境变量
#编辑环境变量配置文件
[root@hadoop01 local]#vi /etc/profile
#向其中追加以下内容
export SQOOP_HOME=/usr/local/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
#重新加载配置文件
[root@hadoop01 local]#source /etc/profile
5.添加 JDBC驱动jar包
#将用于连接mysql的JDBC驱动包添加到sqoop目录下的lib目录中,以下命令从hive中复制而来
[root@hadoop01 local]#cp hive/lib/mysql-connector-java-5.1.49-bin.jar sqoop/lib/
6.修改配置文件
在 Sqoop 安装目录的 conf 子目录下,系统已经提供了一个环境变量文件模板sqoop-env-template.sh,使用 cp 操作复制一个副本,并改名为 sqoop-env.sh,修改sqoop-env.sh (可选,一般安装了Hadoop、HBase、Hive后可不配置此文件)
#修改sqoop运行的环境变量文件sqoop-env.sh
[root@hadoop01 local]#cd sqoop/conf/
[root@hadoop01 conf]#cp sqoop-env.template.sh sqoop-env.sh
[root@hadoop01 conf]#vi sqoop-env.sh
#追加以下内容到文件中
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
7.测试
(1)测试Sqoop是否配置成功
[root@hadoop01 conf]#cd
#查看sqoop的版本号
[root@hadoop01 ~]#sqoop version
#查看sqoop的命令参数
[root@hadoop01 ~]#sqoop help
(2)修改sqoop启动信息
启动的时候,有相关的警告信息,我们可以配置bin/configure-sqoop 文件,先注销对应的相关语句.
建议:使用notpad++进行编辑,使用其列模式:按住Alt键,垂直拖动鼠标即可以列模式编辑。
#注释掉对应行号 75~107 行的内容
#注释掉对应行号 129~147 行的内容
#注释掉对应行号 227~228 行的内容
#注释掉对应行号 230~231 行的内容
8.sqoop操作
连接对应MySQL数据库
-
交互式访问
[root@hadoop01 ~]#sqoop list-databases --connect jdbc:mysql://hadoop03:3306 --username root --password 123456
-
文件授权访问
#生成密码文件,为隐藏文件
[root@hadoop01 ~]#echo -n "123456" > .password
#查看文件
[root@hadoop01 ~]#ls -a
[root@hadoop01 ~]#cat .password
#修改文件访问权限为400
[root@hadoop01 ~]#chmod 400 .password
#将密码文件上传至HDFS
[root@hadoop01 ~]#hdfs dfs -put .password /
#使用密码文件访问mysql数据库
[root@hadoop01 ~]#sqoop list-databases --connect jdbc:mysql://hadoop03:3306 --username root --password-file /.password
使用 Sqoop 获取指定 URL 数据库中所有表
[root@hadoop01 ~]#sqoop list-tables --connect jdbc:mysql://hadoop03:3306/mysql?useSSL=false --username root --password 123456
-
sqoop导入数据
#使用xshell上传文件EMP.sql #在安装mysql的节点上登录mysql [root@hadoop03 ~]#mysql -u root -p 123456 #在 MySQL 中新建一个sqoop_db 数据库 mysql>create database sqoop_db; mysql>use sqoop_db; #导入EMP.sql文件到sqoop_db 数据库中 mysql>source /root/EMP.sql; #查看数据 mysql>show tables; #查询数据 mysql>select * from EMP;
-
Import导入对应参数
• 通用参数
--connect <jdbc-url> : 指定JDBC连接串
--username <username> : 用户名
--password <password> : 密码
--password-file: 包含密码的文件
• 导入控制参数
--append :追加数据至已存在的HDFS数据集
--columns<col,col,col…> :指定导入的列
-e,--query<statement> :执行SQL语句,查询结果将被导入
--table<table-name> :读取的表名
--target-dir<dir> :将导入的HDFS目录,用于单表路径指定
--warehouse-dir :将导入的HDFS目录,用于多表路径指定
--where<where express> :条件过滤
--delete-target-dir :如果目录存在则删除目录
-m,--num-mappers :导入时并行map任务数量
-z,--compress :启用压缩
--mapreduce-job-name<name> :作业名称
• 输入格式控制参数
--input-enclosed-by<char> :设置输入字符包围符
--input-escaped-by<char> :设置输入转义符
--input-fields-terminated-by<char> :设置输入字段分隔符
--input-lines-terminated-by<char> :设置输入行分隔符
• 输出格式控制参数
--fields-terminated-by<char> :设置字段分隔符
--lines-terminated-by<char> :设置行分隔符
• Hive 参数
--create-hive-table :自动创建Hive表
--hive-database<database-name> :设置Hive数据库名
--hive-import :导入RDBMS表至Hive
--hive-overwrite :如果数据存在则覆盖
--hive-partition-key :分区键
--hive-partition-value :分区值
--hive-table<table-name> :指定导入Hive的表
• HBase 参数
--column-family<family> :设置导入的目标列族
--hbase-create-table :自动创建HBase表
--hbase-row-key<col> :指定哪一列作为RowKey
--hbase-table :指定导入的HBase表名
--hbase-bulkload :启用批量加载
-
将mysql中的数据导入到HDFS
[root@hadoop01 ~]#sqoop import --connect jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false --username root --password 123456 --table EMP -m 1 --columns "EMPNO,ENAME,JOB,SAL,COMM" --target-dir sqoop_emp_column --mapreduce-job-name fromMySQLToHDFS --delete-target-dir
查看导入HDFS的数据
[root@hadoop01 ~]#hdfs dfs -ls /user/root/sqoop_emp_column
[root@hadoop01 ~]#hdfs dfs -text /user/root/sqoop_emp_column/part*
导入表数据并指定压缩格式以及存储格式
[root@hadoop01 ~]#sqoop import --connect jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false --username root --password 123456 --table EMP -m 1 --target-dir sqoop_emp_parquet --mapreduce-job-name fromMySQLToHDFS --as-parquetfile --compression-codec org.apache.hadoop.io.compress.SnappyCodec --delete-target-dir
--as-parquet :指定导出格式为 Parquet 格式,当然也可指定导出格式为 SequenceFile 等其他格式。
--compression-codec : 指定压缩使用的 codec 编码;因为在 Sqoop 中默认时使用压缩的,所以此次只须指定 codec 编码即可。
使用web方式查看导入HDFS的数据
打开浏览器,输入hadoop01:5007
,查看sqoop_emp_parquet目录中的数据。
导入表数据并使用指定的分隔符和条件
[root@hadoop01 ~]#sqoop import --connect jdbc:mysql://192.168.242.131:3306/sqoop_db?useSSL=false --username root --password 123456 --table EMP -m 1 --target-dir sqoop_emp_split --mapreduce-job-name fromMySQLToHDFS --fields-terminated-by '\t' --lines-terminated-by '\n' --where 'sal>2000' --delete-target-dir
--fields-terminated-by :设置字段之间的分隔符
--lines-terminated-by :设置行之间的分隔符
--where :指定 emp 表中满足条件的数
查看导入的数据
[root@hadoop01 ~]#hdfs dfs -ls /user/root/sqoop_emp_split
[root@hadoop01 ~]#hdfs dfs -text /user/root/sqoop_emp_split/part*
导入指定查询语句的数据
[root@hadoop01 ~]#sqoop import --connect jdbc:mysql://hadoop1:3306/sqoop_db?useSSL=false --username root --password 123456 --target-dir sqoop_emp_query
--query 'select * from EMP where sal>2000 and deptno=20 and $CONDITIONS' -m 1
--delete-target-dir
--query :指定查询语句,将查询结果导入到HDFS 中,最后需要添加 AND $CONDITIONS ,这是固定写法。--table 可以省略不写了。
使用 eval 可以执行SQL语句并显示结果
[root@hadoop01 ~]# sqoop eval --connect jdbc:mysql://hadoop1:3306/sqoop_db?useSSL=false --username root --password 123456 --query 'select * from EMP where DEPTNO=10'
注意:查询的结果不会保存在HDFS上
导出mysql中所有的表到HDFS
[root@hadoop01 ~]#sqoop import-all-tables --connect jdbc:mysql://localhost:3306/test?useSSL=false --username root --password 123456 --warehouse-dir /mysql/tables -m 1
运行Sqoop 脚本以封装 import 操作
上面介绍的Sqoop 的使用方式都是直接运行 Sqoop 脚本,这种方式使用起来比较麻烦。在Sqoop中提供了 --options-file 参数,开发人员可以先将 Sqoop 脚本封装到一个文件中,然后使用 --options-file 参数来指定封装后的脚本并运行,这样可以方便后期的维护。
-
在 sqoop安装目录下创建一个 sqoop_data\emp.opt 文件,注意:每个参数和值均占单独一行。
-
编写emp.opt文件内容 注意:每个参数和值均占单独一行
import
--connect jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false
--username
root
--password
123456
--target-dir
sqoop_emp_options_file
--table
EMP
-m
1
--delete-target-dir
-
运行脚本文件
[root@hadoop01 sqoop_data]#sqoop --options-file emp.opt
导入 MySQL 数据到 Hive
将 MySQL数据导入到 Hive 的执行原理:先将 MySQL数据导入到HDFS 上,然后再使用 load 函数将 HDFS 的文件加载到 Hive 表中
注意:需要再 Sqoop\lib 包下加入 Hive 的相关组件包,在hive/lib/目录中的两个jar包:
hive-common-1.2.1.jar hive-exec-1.2.1.jar
-
Hive 参数说明:
--create-hive-table :自动创建Hive表
--hive-database<database-name> :设置Hive数据库名
--hive-import :导入RDBMS表至Hive
--hive-overwrite :如果数据存在则覆盖
--hive-partition-key :分区键
--hive-partition-value :分区值
--hive-table<table-name> :指定导入Hive的表
-
导入数据到Hive,编写
emp1.opt
脚本
import
--connect
jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false
--username
root
--password
123456
--target-dir
sqoop_emp_options_file
--table
EMP
-m
1
--delete-target-dir
--hive-import
--create-hive-table
--hive-database
wise_db
--hive-table
emp_import
导出 HDFS 数据到 MySQL 上
在导出数据 (表) 前需要先创建待导出表的结构,如果待导出的表在数据库中不存在,则报错;
如果重复导出表,则表中的数据会重复。
-
sqoop-export
//通用参数
Common arguments:
--connect <jdbc-uri>
--password <password>
--username <username>
// 导出控制参数
Export control arguments:
--batch
--columns <col,col,col...>
--direct
--export-dir <dir>
-m,--num-mappers <n>
--mapreduce-job-name <name>
--table <table-name>
// 输入文件参数配置
Input parsing arguments:
--input-fields-terminated-by <char>
--input-lines-terminated-by <char>
// 输出文件参数配置
Output line formatting arguments:
--fields-terminated-by <char>
--lines-terminated-by <char>
-
导出 HDFS 数据到 MySQL文章来源:https://www.toymoban.com/news/detail-495353.html
#在mysql中创建表结构
mysql>use sqoop_db;
mysql>create table emp_demo as select * from EMP where 1=2;
mysql>select * from emp_demo;
#导出HDFS数据到mysql的表emp_demo
[root@hadoop01 ~]#sqoop export --connect jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false --username root --password 123456 --columns "EMPNO,ENAME,JOB,SAL,COMM,DEPTNO" --table emp_demo --export-dir /user/root/emp -m 1
--export-dir :指出将要导出的数据目录。注意:每运行一次上述代码,就会重新插入数据到MySQL文章来源地址https://www.toymoban.com/news/detail-495353.html
到了这里,关于Sqoop安装配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!