sqoop job 定时实现增量、全量导入Hive

sqoop job 定时实现增量、全量导入Hive,第1张

sqoop job 定时实现增量、全量导入Hive

本人使用工具:

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 的文件 打开编辑 加入以下内容:

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

---------------------------------------分割线-------------------------------------

每隔一段时间需要我们手动执行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表里面的数据也会不断更新

到这一步定时任务就完成了

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5136001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存