sqoop job 定时实现增量、全量导入Hive
本人使用工具:Windows 和 虚拟机链接的工具为 :MobaXtermWindows链接数据库工具:Navicat本人的数据库字段为:sqoop 实现全量导入执行的语句为:sqoop import --connect jdbc:mysql://192.138.56.101:3306/dbFood --username root --password root --table doubantop
本人使用工具:
Windows 和 虚拟机链接的工具为 :MobaXterm
Windows链接数据库工具:Navicat
本人的数据库字段为:
sqoop 实现全量导入执行的语句为:
sqoop import --connect jdbc:mysql://192.138.56.101:3306/dbFood --username root --password root --table doubantop250 --hive-import --create-hive-table --fields-terminated-by ","
第一个参数是:虚拟机的ip
第二个参数是:数据库名
第三个参数是:登陆虚拟机的用户
第四个参数是:用户的密码
第五个参数是:要从数据库导入到Hive的数据库表
sqoop 实现增量导入执行的语句为:
sqoop import --connect jdbc:mysql://192.168.56.101:3306/dbFood --username root --password root --table doubantop250 --hive-import --fields-terminated-by "," -m 1 --hive-table doubantop250 --incremental append --check-column rank1 --last-value 0
第一个参数:对应你数据库当中的主键名 我的是rank1
第二个参数:你要从第几条数据开始导入(从0开始,不包括0)
---------------------------分割线---------------------------------
每一次我们要实现增量导入的时候都要手动修改 last-value 太麻烦了 我们可以定义 一个 job来实现增量导入 每执行一次job last-value的值就会自动跳转到当前最大的主键的位置
创建一个job 名为myjob2
sqoop job --create myjob2 -- import --connect jdbc:mysql://192.168.56.101:3306/dbFood --username root --password root --table doubantop250 --hive-import --fields-terminated-by ',' --hive-table doubantop250 --incremental append --check-column rank1 --last-value 0
rank1 是我的主键
如果创建成功 在根目录下执行下面的代码
sqoop job --list
可以使用的 job 就会全部列出来
下面是常用的命令
执行:
sqoop job --exec myjob2
查看存在的 job:
sqoop job --list
删除:
sqoop job --delete myjob2
查看 job 的定义 :
sqoop job --show myjob2
--------------------------------------分割线--------------------------------
我们执行sqoop job --exec myjob2 的时候需要输入数据库的密码
所以定时器也要输入密码,我们可以设置免密认证:
在 /hadoop/sqoop/conf 下面 有 一个叫 sqoop-site.xml 的文件 打开编辑 加入以下内容:
<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
<description>If true, allow saved passwords in the metastore.
</description>
</property>
---------------------------------------分割线-------------------------------------
每隔一段时间需要我们手动执行sqoop job --exec myjob2 太麻烦了
我们可以让Linux系统每间隔一段时间就自动执行 job
我们需要创建一个后缀为 .sh 的文件
我在hadoop目录下创建
创建 命令为 vim Time_job.sh
然后点击刷新 就可以看见文件了
Time_job.sh 里面的内容为:
#!/bin/sh
# source /etc/profile
current_time=$(date +%Y-%m-%d___%H:%M:%S)
echo $current_time >> /hadoop/job_log.log
echo ............................ >> /hadoop/job_log.log
sqoop job --exec myjob2
然后创建定时任务去定时执行 Time_job.sh 文件即可
创建定时任务命令为:
crontab -e
增加内容:
*/1 * * * * . /etc/profile; /bin/sh /hadoop/Time_job.sh
即增加了定时任务 每一分钟 执行 Time_job.sh 一次
如果你的数据库的数据在不断更新,你的hive表里面的数据也会不断更新
到这一步定时任务就完成了
更多推荐
所有评论(0)