sqoop通过创建job实现自动化定时增量导入

笔者目前用sqoop把mysql数据导入到Hive中,最后实现命令行导入,sqoop版本1.4.7,实现如下

sqoop job --import --connect jdbc:mysql://10.4.20.93:3303 \
--username user \
--password 123456  \
--query "select user_name ,user_id,identype from users where \$CONDITIONS" \
--hive-import \
--hive-database haibian_odbc \
--hive-table users \
--split-by id \
--fields-terminated-by '\01' \
--lines-terminated-by '\n' \
--target-dir /user/hive/tmp/users \
--hive-delims-replacement ' ' 
--incremental append \
--check-column id \
--last-value 0

最后需要把这个导入搞成job,每天定时去跑,实现数据的自动化增量导入,sqoop支持job的管理,可以把导入创建成job重复去跑,并且它会在metastore中记录增值,每次执行增量导入之前去查询

创建job命令如下

sqoop job --create users -- import --connect jdbc:mysql://10.4.20.93:3303 \
--username user \
--password 123456  \
--query "select user_name ,user_id,identype from users where \$CONDITIONS" \
--hive-import \
--hive-database haibian_odbc \
--hive-table users \
--split-by id \
--fields-terminated-by '\01' \
--lines-terminated-by '\n' \
--target-dir /user/hive/tmp/users \
--hive-delims-replacement ' ' 
--incremental append \
--check-column id \
--last-value 0

创建完job就可以去执行它了

sqoop job --exec users
可以把该指令设为Linux定时任务,或者用Azkaban定时去执行它

你可能感兴趣的:(Hadoop)