栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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表里面的数据也会不断更新

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号