安装部署
大数据处理技术 - sqoop 实战及原理
下载并解压
安装 sqoop 的前提是已经具备 java 和 hadoop 的环境
下载地址
http://archive.cloudera.com/cdh5/cdh/5/
sqoop1 版本详细下载地址
http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.14.0.tar.gz
sqoop2 版本详细下载地址
http://archive.cloudera.com/cdh5/cdh/5/sqoop2-1.99.5-cdh5.14.0.tar.gz
我们这里使用 sqoop1 的版本,下载之后上传到 /export/softwares 目录下,然后进行解压
cd /export/softwares |
修改配置文件
cd /export/servers/sqoop-1.4.6-cdh5.14.0/conf/ |
export HADOOP_COMMON_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0 |
加入额外的依赖包
sqoop 的使用需要添加两个额外的依赖包,一个是 mysql 的驱动包,一个是 java-json 的的依
赖包,不然就会报错
mysql-connector-java-5.1.40.jar
java-json.jar
Sqoop 的数据导入
“导入工具” 导入单个表从 RDBMS 到 HDFS。表中的每一行被视为 HDFS 的记录。所有记录都存储为文本文件的文本数据(或者 Avro、sequence 文件等二进制数据)
列举出所有的数据库
命令行查看帮助
bin/sqoop list-databases --help |
列出 win10 主机所有的数据库:
开启本地数据库远程连接权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION; |
bin/sqoop list-databases --connect jdbc:mysql://192.168.52.120:3306/ --username root --password 123456 |
bin/sqoop list-databases --connect jdbc:mysql://10.6.67.200:3306/ --username root --password 123 |
查看某一个数据库下面的所有数据表
bin/sqoop list-tables --connect jdbc:mysql://10.6.67.200:3306/test00 --username root --password 123 |
导入数据库表数据到 HDFS
下面的命令用于从 MySQL 数据库服务器中的 emp 表导入 HDFS。
bin/sqoop import --connect jdbc:mysql://10.6.67.200:3306/test00 --password 123 --username root --table emp --m 1 |
为了验证在 HDFS 导入的数据,请使用以下命令查看导入的数据
hdfs dfs -ls /user/root/emp |
导入到 HDFS 指定目录
在导入表数据到 HDFS 使用 Sqoop 导入工具,我们可以指定目标目录。
使用参数 –target-dir 来指定导出目的地,
使用参数 —delete-target-dir 来判断导出目录是否存在,如果存在就删掉
bin/sqoop import --connect jdbc:mysql://10.6.67.200/test00 --username root --password 123 --delete-target-dir --table emp --target-dir /sqoop/emp --m 1 |
查看导出的数据
hdfs dfs -text /sqoop/emp/part-m-00000 |
它会用逗号(,)分隔 emp_add 表的数据和字段。
导入到 hdfs 指定目录并指定字段之间的分隔符
bin/sqoop import --connect jdbc:mysql://10.6.67.200:3306/test00 --username root --password 123 --delete-target-dir --table emp --target-dir /sqoop/emp3 --m 1 --fields-terminated-by '\t' |
查看文件内容
hdfs dfs -text /sqoop/emp3/part-m-00000 |
Sqoop 的数据导出
将数据从 HDFS 把文件导出到 RDBMS 数据库
导出前,目标表必须存在于目标数据库中。
- 默认操作是从将文件中的数据使用 INSERT 语句插入到表中
- 更新模式下,是生成 UPDATE 语句更新表数据
hdfs 导出到 mysql
数据是在 HDFS 当中的如下目录 /sqoop/emp,数据内容如下
第一步:创建 mysql 表
CREATE TABLE emp_out( |
第二步:执行导出命令
通过 export 来实现数据的导出,将 hdfs 的数据导出到 mysql 当中去
bin/sqoop export \ |
第三步:验证 mysql 表数据