简介
-
sqoop就是一个能够在 关系型数据库 和 hadoop 之间实现数据导入导出的工具,关系型数据库数据迁移到hadoop的称为导入,反之为导出。
-
sqoop底层执行的是 mapreduce中的 mapTask,这是因为它实现数据的迁移,不涉及数据的聚合操作。在导入数据时,mapreduce 程序读取 数据库数据使用
DBinputFormat
来实现。在导出数据时,mapreduce 程序将数据写到数据库,使用DBoutputFormat
来实现。 -
sqoop的安装步骤包含了(只是一个工具,学习时最好三台机器都安装):
- 下载解压,修改
sqoop-env.sh
配置文件。 - 添加 jdbc 驱动包 到 sqoop的 lib 文件夹下。
- 添加环境变量。
- 执行
sqoop-version
验证安装结果。
- 下载解压,修改
-
sqoop帮助文档:
sqoop help sqoop list-databases --help sqoop list-tables --help Common arguments:常见的连接关系数据库属性
-
sqoop 安装验证
bin/sqoop list-databases \ --connect jdbc:mysql://localhost:3306/ \ --username root --password hadoop
注意事项:命令携带参数必须出现在一行中,若换行就意味着自动提交执行,可通过\表示未结束。
全量导入
-
全量导入数据到hdfs
-
--connect --username --password
指定连接的数据库,账号和密码,mysql的地址尽量不要使用localhost 请使用ip或者host。 -
--table
指定的是要导入的数据库表。 -
--target-dir
指定导入的HDFS路径,--delete-target-dir
如目录存在则删除。 -
--fields-terminated-by '\t'
,指定HDFS数据字段间的分隔符,默认分隔符是逗号。 -
--m 1
如果表的数据比较多,可以指定mapTask个数,如果值大于1且表没有主键就要指定--split-by 字段名
进行切分。bin/sqoop import \ --connect jdbc:mysql://node-1:3306/userdb \ --username root \ --password hadoop \ --target-dir /sqoopresult214 \ --fields-terminated-by '\
-