[转]实现Hive数据同步更新的shell脚本

引言:

上一篇文章《Sqoop1.4.4 实现将 Oracle10g 中的增量数据导入 Hive0.13.1 ,并更新Hive中的主表》http://www.linuxidc.com/Linux/2014-09/106282.htm描述了增量更新Hive表的原理和Sqoop,Hive命令,本文基于上一篇文章的内容实现了shell脚本的编写,稍加修改就可用于实际工程。

shell脚本

#!/bin/bash

#Please set the synchronize interval,unit is hour.

update_interval=24

#Please set the RDBMS connection params

rdbms_connstr="jdbc:oracle:thin:@192.168.0.147:1521:ORCLGBK"

rdbms_username="SP"

rdbms_pwd="fulong"

rdbms_table="OMP_SERVICE"

rdbms_columns="ID,SERVICE_NAME,SERVICE_PROCESS,CREATE_TIME,ENABLE_ORG,ENABLE_PLATFORM,IF_DEL"

#Please set the hive params

hive_increment_table="SERVICE_TMP"

hive_full_table="service_all"

#---------------------------------------------------------

#Import icrement data in RDBMS into Hive

enddate=$(date ‘+%Y/%m/%d %H:%M:%S‘)

startdate=$(date ‘+%Y/%m/%d %H:%M:%S‘ -d ‘-‘+${update_interval}+‘ hours‘)

$SQOOP_HOME/bin/sqoop import --connect ${rdbms_connstr} --username ${rdbms_username} --password ${rdbms_pwd} --table ${rdbms_table} --columns "${rdbms_columns}" --where "CREATE_TIME > to_date(‘${startdate}‘,‘yyyy-mm-dd hh24:mi:ss‘) and CREATE_TIME < to_date(‘${enddate}‘,‘yyyy-mm-dd hh24:mi:ss‘)" --hive-import --hive-overwrite --hive-table ${hive_increment_table}

#---------------------------------------------------------

#Update the old full data table to latest status

$HIVE_HOME/bin/hive -e "insert overwrite table ${hive_full_table} select * from ${hive_increment_table} union all select a.* from ${hive_full_table} a left outer join ${hive_increment_table} b on a.service_code = b.service_code where b.service_code is null;"


注意:

在shell脚本中执行hive hql的命令格式是  hive -e "select ..."


Cron脚本

添加定时任务每天凌晨2点执行该脚本

0 2 * * * /home/fulong/shell/dataSync.sh

基于Hadoop集群的Hive安装 http://www.linuxidc.com/Linux/2013-07/87952.htm

Hive内表和外表的区别 http://www.linuxidc.com/Linux/2013-07/87313.htm

Hadoop + Hive + Map +reduce 集群安装部署 http://www.linuxidc.com/Linux/2013-07/86959.htm

Hive本地独立模式安装 http://www.linuxidc.com/Linux/2013-06/86104.htm

Hive学习之WordCount单词统计 http://www.linuxidc.com/Linux/2013-04/82874.htm

Hive运行架构及配置部署 http://www.linuxidc.com/Linux/2014-08/105508.htm

时间: 2024-12-19 23:46:58

[转]实现Hive数据同步更新的shell脚本的相关文章

【甘道夫】实现Hive数据同步更新的shell脚本

引言: 上一篇文章<[甘道夫]Sqoop1.4.4 实现将 Oracle10g 中的增量数据导入 Hive0.13.1 ,并更新Hive中的主表>http://blog.csdn.net/u010967382/article/details/38735381 描述了增量更新Hive表的原理和Sqoop,Hive命令,本文基于上一篇文章的内容实现了shell脚本的编写,稍加修改就可用于实际工程. ***欢迎转载,请注明来源***    http://blog.csdn.net/u01096738

做ETL的时候用到的数据同步更新代码

这里是用的从一个库同步到另一个库,代码如下 private void IncrementalSyncUpdate(string fromConn, string toConn, Dictionary<string, string> sqlList) { var sw = new Stopwatch(); using (var conn = new SqlConnection(fromConn)) { if (conn.State != ConnectionState.Open) conn.Op

[db2数据库数据同步解决方案]DB2数据库数据同步更新方法及设备与流程

技术总结 本发明实施例提供了DB2数据库数据同步更新方法及设备.所述方法包括:根据待同步更新表创建数据详细地址存储列,对待同步更新表上S锁,获取源端DB2数据库当前的日志序列号LSN作为待同步更新表的起始LSN,释放S锁:获取待同步更新表的结果集,将结果集发送至目标端数据库入库,获取源端DB2数据库当前LSN作为待同步更新表的结束LSN:接收源端同步更新服务发送的初始化数据,在目标端数据库将ROWID插入数据详细地址存储列,初始化待同步更新表的数据:启动数据实时同步更新服务,将源端DB2数据库的

svn同步到ftp shell脚本

#!/bin/bash Action(){ #1,获取svn更新输出 /opt/SVN/svn/bin/svn update /opt/LAMPZ/apache/web  > file_out #2,通过输出文件file_out取得行数 line=$(wc -l file_out|awk '{print $1}') #3,如果行数大于2,说明有更新或者删除操作,取得需要删除或者更新的文件列表 if [[ $line > 2 ]];then egrep -v 'Updating|Updated|

数据库中两张表之间的数据同步实现思路(增加、删除、更新)Mysql、sqlserver

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加:如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END 2.数据同步删除:如有

【转】mysql 触发器实现两个表的数据同步

mysql通过触发器实现两个表的同步 目前,在本地测试成功. 假设本地的两个数据库a和b,a下有表table1(id, val) b下有表table2(id, val) 假设希望当table1中数据更新,table2中数据同步更新. 代码: DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ TRIGGER `a`.`触发器名` BEFORE UPDATE ON `a`.`table1` FOR EACH ROW BEGIN I

基于datax的数据同步平台

一.需求 由于公司各个部门对业务数据的需求,比如进行数据分析.报表展示等等,且公司没有相应的系统.数据仓库满足这些需求,最原始的办法就是把数据提取出来生成excel表发给各个部门,这个功能已经由脚本转成了平台,交给了DBA使用,而有些数据分析部门,则需要运维把生产库的数据同步到他们自己的库,并且需要对数据进行脱敏,比如客户的身份证号.手机号等等,且数据来源分散在不同的机器,不同的数据库实例里,这样就无法使用MySQL的多源复制,只能用写脚本通过SQL语句实现,随着业务的发展,导致堆积到运维部门的

rsync + inotify 实现多台服务器数据同步

环境分析:目前环境4台web服务器采用共享存储技术,由于nas服务最近频繁掉线,影响网站访问,故计划采用对象存储方案.我们云环境补救措施可以用多台Linux服务器做存储,配合rsync(同步)+notify(触发)实现服务器数据同步. 方案实施: 1.方案分析:每台web服务器上分别挂载一个存储盘/newweb,将原先网站访问资源指向/otherweb的路径修改至这个/newweb,由于磁盘容量没有nas大,可以将web用到的数据源,如图片.网页等放在这个路径下,邮箱.日志等继续放在nas下,即

Linux系统Shell脚本编程

1. shell脚本概念:C语言编写的.命令解释器.编程语言. 是用户使用linux的桥梁. shell脚本语言非常擅长处理文本类型的数据. 2. shell脚本作用:自动化管理.监控管理.日志数据处理.自动数据备份. 3. shell脚本中的成分:注释.命令.shell变量.结构控制语句. 以行为单位  一行一行依次执行. (在shell脚本中可以出现任何在交互方式下可以使用的命令.) 4. 调用shell脚本的两种方式: (1)sh 脚本文件名 (2)./脚本文件名(需要有执行权限) 当执行