Sqoop 之 job 工具

本文成型的历史原因来源于使用 shell 脚本封装单个 sqoop 的脑壳疼操作

在执行定时任务的时候,如果需要执行的 sqoop 足够多,我们可以将他们封装在一个 shell 脚本中,再使用 crontab 进行定时任务调用。

而如果同一时间需要执行的 sqoop 数量仅仅只有一两个,那我们完全没有必要为了它写一个 shell 脚本,当然只是按场景选择不同策略,并不代表哪种方法更差。

对于不想多建 shell 脚本的同学,还有 sqoop job 这条路。

job 语法

1
2
$ sqoop job (generic-args) (job-args) [-- [subtool-name] (subtool-args)]
$ sqoop-job (generic-args) (job-args) [-- [subtool-name] (subtool-args)]

sqoop job 的语法如上所示,而其后追加的命令参数也无需按顺序堆砌。

命令参数

Argument Description
--create <job-id> Define a new saved job with the specified job-id (name). A second Sqoop command-line, separated by a -- should be specified; this defines the saved job.
--delete <job-id> Delete a saved job.
--exec <job-id> Given a job defined with --create, run the saved job.
--show <job-id> Show the parameters for a saved job.
--list List all saved jobs

用法

创建

一条同步的命令大致是长这个样子

1
2
3
4
5
6
7
8
9
10
11
$ sqoop import 
--connect jdbc:mysql://127.0.0.1:3306/tmp \
--username amos \
--password amos_tmp \
--table user_log \
--hive-import --hive-overwrite \
--hive-database tmp \
--hive-table user_log \
--hive-drop-import-delims --fields-terminated-by '\001' --lines-terminated-by '\n' \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--as-parquetfile

建立 sqoop job 所需要的操作只需要把上面的参数追加在下面这条命令下就可以了

1
$ sqoop job --create user_log -- import

删除

1
$ sqoop job -delete user_log

执行

1
$ sqoop job --exec user_log

查看详情

1
$ sqoop job --show user_log

查看 job 列表

1
2
3
4
$ sqoop job --list
18/11/19 02:57:58 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.14.0
Available jobs:
user_log

如何制定定时任务?

1
2
$ crontab -e
0 0 * * * sqoop job --exec user_log >> /home/amos/sqoop_job/user_log.log 2>&1

仅仅是一个 crontab 的调用语句,简单高效。

每次执行都需要输入数据库密码?

sqoop 将它们存储数据的 metastore 定义为不安全的地方,所以它并没有将数据库密码存入 metastore,这十分合理,但如果你觉得这无所谓,可以开启存储密码的选项。

1
$ vi ${SQOOP_HOME}/conf/sqoop-site.xml

增加如下内容

    sqoop.metastore.client.record.password     true     If true, allow saved passwords in the metastore.    

只需要在第一次执行时输入密码,之后密码就存储在 metastore 中了。

参考资料

sqoop-job

Saved jobs and passwords