Sqoop使用说明

Sqoop使用说明

Sqoop 是一款 Apache 社区的开源软件,支持在 Hadoop 生态软件和结构化数据集(例如数据库)之间进行高效的批量数据传输。

背景信息

MySQL 数据导入 HDFS

Master 节点上执行如下命令。

sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <hdfs-dir> --split-by <split-column> --check-column <col> --incremental <mode> --last-value <value>

参数

描述

dburi

数据库的访问链接。例如 jdbc:mysql://192.168.**.**:3306/

dbname

数据库的名称。

username

数据库登录用户名。

password

数据库登录密码。

tablename

MySQL 表的名称。

hdfs-dir

HDFS 的写入目录。例如 /user/hive/result

split-column

可选参数。指定一个用于切分任务的列,默认为表主键列。

col

可选参数。增量导入场景的检查列。

mode

可选参数。增量导入模式,支持 append lastmodified 两种模式。

value

可选参数。指定上次增量导入的检查列的最大值。

详细的参数信息请参见 Sqoop Import

HDFS 数据导入 MySQL

创建好对应 HDFS 中的数据结构的 MySQL 表后,在集群的 Master 节点上执行如下命令。

sqoop export --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <hdfs-dir>

参数

描述

dburi

数据库的访问链接。例如 jdbc:mysql://192.168.**.**:3306/

dbname

数据库的名称。

username

数据库登录用户名。

password

数据库登录密码。

tablename

MySQL 表的名称。

hdfs-dir

HDFS 的写入目录。例如 /user/hive/result

详细的参数信息请参见 Sqoop Import

MySQL 数据导入 Hive

在集群的 Master 节点上执行如下命令。

sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --check-column <col> --incremental <mode> --last-value <value> --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --target-dir <hdfs-dir> --hive-table <hive-tablename>

参数

描述

dburi

数据库的访问链接。例如 jdbc:mysql://192.168.**.**:3306/

dbname

数据库的名称。

username

数据库登录用户名。

password

数据库登录密码。

tablename

MySQL 表的名称。

col

可选参数。增量导入场景的检查列。

mode

可选参数。增量导入模式,支持 append lastmodified 两种模式。

value

可选参数。指定上次增量导入的检查列的最大值。

hdfs-dir

HDFS 的写入目录。例如 /user/hive/result

hive-tablename

Hive 中的表名。

详细的参数信息请参见 Sqoop Import

Hive 数据导入 MySQL

执行命令与导入 HDFS 数据至 MySQL 一致,但需要指定 Hive 表对应的 HDFS 路径。详情请参见 HDFS 数据导入 MySQL

MySQL 数据导入 OSS

在集群的 Master 节点上执行如下命令。

sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <oss-dir> --temporary-rootdir <oss-tmpdir> --check-column <col> --incremental <mode> --last-value <value>

参数

描述

dburi

数据库的访问链接。例如 jdbc:mysql://192.168.**.**:3306/

dbname

数据库的名称。

username

数据库登录用户名。

password

数据库登录密码。

tablename

MySQL 表的名称。

oss-dir

OSS 的写入目录。例如 oss://<AccessKeyId>:<AccessKeySecret>@<BucketName>.oss-cn-hangzhou-internal.aliyuncs.com/result

oss-tmpdir

临时写入目录。指定 mode append 模式时,需要指定该参数。

采用 append 模式后,Sqoop 会先将数据导入临时目录,然后将文件重命名为正常目标目录。如果目标目录已经存在于 HDFS 中,则 Sqoop 拒绝导入并覆盖该目录的内容。

col

可选参数。增量导入场景的检查列。

mode

可选参数。增量导入模式,支持 append lastmodified 两种模式。

value

可选参数。指定上次增量导入的检查列的最大值。

详细的参数信息请参见 Sqoop Import

OSS 数据导入 MySQL

创建好对应 OSS 中数据结构的 MySQL 表后,在集群的 Master 节点上执行如下命令。

sqoop export --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <oss-dir>

参数

描述

dburi

数据库的访问链接。例如 jdbc:mysql://192.168.**.**:3306/

dbname

数据库的名称。

username

数据库登录用户名。

password

数据库登录密码。

tablename

MySQL 表的名称。

oss-dir

OSS 的写入目录。例如 oss://<AccessKeyId>:<AccessKeySecret>@<BucketName>.oss-cn-hangzhou-internal.aliyuncs.com/result

详细的参数信息请参见 Sqoop Import

使用 SQL 作为导入条件

命令和参数如下所示。

sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --query <query-sql> --split-by <sp-column> --hive-import --hive-table <hive-tablename> --target-dir <hdfs-dir>

参数

描述

dburi

数据库的访问链接。例如 jdbc:mysql://192.168.**.**:3306/

dbname

数据库的名称。

username

数据库登录用户名。

password

数据库登录密码。

query-sql

使用的查询语句。例如 SELECT * FROM profile WHERE id>1 AND \$CONDITIONS

sp-column

进行切分的条件。通常跟 MySQL 表的主键有关。

hdfs-dir

HDFS 的写入目录。例如 /user/hive/result

hive-tablename

Hive 中的表名。

详细的参数信息请参见 Sqoop Import

集群和其他数据库的网络配置请参见 在 E-MapReduce 上使用 Sqoop 工具与数据库同步数据进行网络配置