项目主页
项目主页:http://sqoop.apache.org/
下载地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.6/
这里我们选择sqoop
,不是当前最新的sqoop2
,可以直接下载bin-hadoop-2XX
的,由于平台的hadoop
是2.6
,所以需要选择2.X
版本的sqoop
,否则数据导入会出错,同时在下载mysql
驱动的时候,选择最新版本的jar
包,在之前的版本里面有bug
,会导致导入数据到hadoop
失败
安装
下载完成之后,解压到指定目录,增加系统环境变量:HADOOP_COMMON_HOME
和HADOOP_MAPRED_HOME
,这里全部指向hadoop
的安装根目录,将sqoop
的bin
目录添加到PATH
里面去即可全局使用
导入数据配置
这里使用增量导入到hdfs
,因为需要spark
读取数据进行处理,所以需要添加保存模式--save-parquet
,示例配置:
1 | #!/bin/bash |
这里将服务器192.168.1.118
数据库user
的user_aliyun
表导入到HDFS
文件系统,属于增量式,并且导入的数据保持数据表原有结构,spark
可以直接读取处理,主键是user_id
,每次都会检测是否需要导入,options.txt
文件是配置,内容如下:
1 | -m |
这里只复制一份数据,在使用--as-parquetfile
的时候,未使用--append
参数(该参数是在已经存在的hdfs
才有效,否则会报错),hdfs
目的路径必须是二级的,详情请参考http://kitesdk.org/docs/1.0.0/URIs.html#hdfs
,因为使用这种模式的时候底层就是kitesdk
实现的,需要符合其路径规则
导出数据配置
导出数据配置使用export
参数设置,其余的参考官方文档即可
任务模式
如果需要增量模式的话,必须在job
模式下使用,参数如下:
1 | --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. |
示例如下:
1 | sqoop job --create tt_news_list_job -- import --connect "jdbc:mysql://192.168.1.118:3306/datas?useUnicode=true&characterEncoding=utf-8" --table tt_news_list --target-dir /mysql/tt_news_list --as-parquetfile --check-column nId --incremental append --last-value 0 -m 1 |
这个job
在会增量同步数据,主键是nId
,执行的时候sqoop job --exec tt_news_list_job -- --username xxxxxx --password oooooo
,注意在job里面不要写密码,否则每次执行的时候都需要数据库的密码,在执行的时候最佳到命令参数后面即可执行不需要输入密码,然后再把执行命令放到crontab
里面做定时任务
系统定时任务
首先需要创建job
任务,然后在cron
里面定期执行job
即可,cron_job-account_info.sh
示例如下:
1 | #!/bin/bash |
添加定时任务crontab -e
:
0 1 * * * /home/admin/sqoop_task/cron_job-account_info.sh
每天凌晨1点执行脚本