hive表增量抽取到mysql(关系数据库)的通用程序(三)
hive表增量抽取到oracle数据库的通用程序(一)
hive表增量抽取到oracle数据库的通用程序(二)
这几天又用到了该功能了,所以又改进了一版,增加了全量抽取和批量抽取两个参数。并且可以设置每批次抽取到记录数。
使用shell脚本可以方便的将hive中数据抽取到任何关系型数据库中。
shell脚本到demo如下,为便于测试,将每批次处理改为2条记录:
#!/bin/sh ## !!!注意lib中jar包兼容性问题:
## 如果包含log4j-slf4j-impl-2.6..jar、log4j-web-2.6..jar,请删除,否则会导致冲突,程序启动报错。
## dim_code=day
dim_value=`date -d "yesterday" +%Y%m%d` ## 以下字段不能换行
rdms_driver='com.mysql.jdbc.Driver'
rdms_url='jdbc:mysql://xx.xx.xx.xx:3306/bigdata?characterEncoding=UTF8'
rdms_username='bigdata'
rdms_password=''
rdms_tableName=app_flow_general
rdms_columnNames='tenantcode,dim_code,dim_value,store_code,platform,start_date,end_date,uv,pv,bounce_rate,avg_view,avg_ts,new_uv,old_uv,trade_cr'
rdms_presql='delete from app_flow_general where dim_code = "'${dim_code}'" and dim_value ="'${dim_value}'"' ## 依赖hiveServer2
hive_url='jdbc:hive2://dwdev-name1:10000/default'
hive_hql='select tenantcode,dim_code,dim_value,store_code,platform,start_date,end_date,uv,pv,bounce_rate,avg_view,avg_ts,new_uv,old_uv,trade_cr from dw_app.app_flow_general where dim_code = "'${dim_code}'" and dim_value = "'${dim_value}'"' ## 以下是执行java程序,可根据实际情况调整,默认可以不修改
## lib为jar依赖包文件夹
## hive_hql: 必填, hive中查询语句
## rdms_tableName: 必填,目标表名
## rdms_columnNames: 必填,目标表字段
## rdms_presql: 可选, 执行插入前,在RDMS中预先执行的sql。通常用来重复导入时候,先删除之前的错误数据
## batch_size: 可选, 默认值5000,和insert_model配合使用,当insert_model为0时才有效
## insert_model: 可选, 默认0, 默认分批次插入,-分批次读取插入, -全部一次性读取插入
java -Djava.ext.dirs=lib com.etl.Hive2RMDS \
--hive_url "${hive_url}" \
--hive_hql "${hive_hql}" \
--rdms_driver "${rdms_driver}" \
--rdms_url "${rdms_url}" \
--rdms_username "${rdms_username}" \
--rdms_password "${rdms_password}" \
--rdms_tableName "${rdms_tableName}" \
--rdms_columnNames "${rdms_columnNames}" \
--rdms_presql "${rdms_presql}" \
--batch_size '' \
--insert_model ''
执行文件目录结构如下:
lib文件夹放所有依赖包,lib文件夹和shell脚本同层。

实际运行时,显示解析的参数

一共4条记录,分2批次导入。
注意hive用的版本是apache 2.3.3,不支持cdh5的hive版本。
源程序下面gitee:
https://gitee.com/pang123/hive2etl
hive表增量抽取到mysql(关系数据库)的通用程序(三)的更多相关文章
- hive表增量抽取到oracle数据库的通用程序(二)
hive表增量抽取到oracle数据库的通用程序(一) 前一篇介绍了java程序的如何编写.使用以及引用到的依赖包.这篇接着上一篇来介绍如何在oozie中使用该java程序. 在我的业务中,分为两段: ...
- hive表增量抽取到oracle数据库的通用程序(一)
hive表增量抽取到oracle数据库的通用程序(二) sqoop在export的时候 只能通过--export-dir参数来指定hdfs的路径.而目前的需求是需要将hive中某个表中的多个分区记录一 ...
- 创建function实现hive表结果导出到mysql
1. 创建临时function (这里两个包都是hive自带的,不需要自己开发的,可以根据名称查找对应的版本) add jar /opt/local/hive/lib/hive-contrib-.ja ...
- oozie4.3.0+sqoop1.4.6实现mysql到hive的增量抽取
1.准备数据源 mysql中表bigdata,数据如下: 2. 准备目标表 目标表存放hive中数据库dw_stg表bigdata 保存路径为 hdfs://localhost:9000/user/h ...
- 将Hive统计分析结果导入到MySQL数据库表中(一)——Sqoop导入方式
https://blog.csdn.net/niityzu/article/details/45190787 交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HB ...
- 使用 sqoop 将mysql数据导入到hive表(import)
Sqoop将mysql数据导入到hive表中 先在mysql创建表 CREATE TABLE `sqoop_test` ( `id` ) DEFAULT NULL, `name` varchar() ...
- Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递
http://niuzhenxin.iteye.com/blog/1706203 Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...
- hive和hbase本质区别——hbase本质是OLTP的nosql DB,而hive是OLAP 底层是hdfs,需从已有数据库同步数据到hdfs;hive可以用hbase中的数据,通过hive表映射到hbase表
对于hbase当前noSql数据库的一种,最常见的应用场景就是采集的网页数据的存储,由于是key-value型数据库,可以再扩展到各种key-value应用场景,如日志信息的存储,对于内容信息不需要完 ...
- HDFS文件和HIVE表的一些操作
1. hadoop fs -ls 可以查看HDFS文件 后面不加目录参数的话,默认当前用户的目录./user/当前用户 $ hadoop fs -ls 16/05/19 10:40:10 WARN ...
随机推荐
- BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...
- pycharm如何设置python版本、设置国内pip镜像、添加第三方类库
直接上图(mac环境): 一.设置项目的python版本 File->Default Settings ... 在弹出的界面上(参考下图),左上角的下拉框里,选择python解释器的版本即可(建 ...
- Voltage Translation for Analog to Digital Interface ADC
Voltage Translation for Analog to Digital Interface 孕龙逻辑分析仪 ZeroPlus Logic Analyzer How to modify an ...
- Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Trident (又称为MSHTML),是微软的窗口操作系统(Windows)搭载的网页浏览器—Internet Explorer的排版引擎的名称. 它的第一个版本随着1997年10月Internet ...
- ArcGIS中国工具2.5正式发布
ArcGIS中国工具2.5正式发布 1. 支持1:500,1:1000,1:2000的梯形接幅表和图框打印(见3.2) 2. 支持接幅表,一定间隔如1秒加节点生成并能自动识别打印(见3. ...
- SharePoint Online 自定义Modern UI表单
前言 用过SharePoint Online 版本的朋友们,应该很熟悉SharePoint为我们带来的Modern UI,而这个页面的订制,也跟原来的表单定制方式不同了,而且更加简单了. 而且,试了一 ...
- 阿里云ecs 增加虚拟网卡
cd /etc/sysconfig/network-scripts/ #进入网卡目录 cp ifcfg-eth0 ifcfg-eth0:1 # 复制出ifcfg-eth0:1虚拟网卡 vi i ...
- 关于VC预定义常量_WIN32,WIN32,_WIN64(转)
VC2012 下写 Windows 程序时,有时需要判断编译环境.在之前的文章<判断程序是否运行在 Windows x64 系统下.>里说过如何在运行期间判断系统环境,但在编译时如何判断? ...
- 使用Python登录Github网站
在下面的代码中, 展示了使用Python脚本登录Github的方法. 如果需要登录别的网站,那么请使用Chrome的Inspect的功能寻找到目标的object,对代码进行替换. 代码先登录了gith ...
- 解决PuppetDB Failed to submit 'replace facts'问题
在升级了CentOS6.5后,系统一直运行正常,今天在尝试自动部署了一台新的Bootnode后,发现在运行puppet agent时,发生报错: Error: Could not retrieve c ...