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(关系数据库)的通用程序(三)的更多相关文章

  1. hive表增量抽取到oracle数据库的通用程序(二)

    hive表增量抽取到oracle数据库的通用程序(一) 前一篇介绍了java程序的如何编写.使用以及引用到的依赖包.这篇接着上一篇来介绍如何在oozie中使用该java程序. 在我的业务中,分为两段: ...

  2. hive表增量抽取到oracle数据库的通用程序(一)

    hive表增量抽取到oracle数据库的通用程序(二) sqoop在export的时候 只能通过--export-dir参数来指定hdfs的路径.而目前的需求是需要将hive中某个表中的多个分区记录一 ...

  3. 创建function实现hive表结果导出到mysql

    1. 创建临时function (这里两个包都是hive自带的,不需要自己开发的,可以根据名称查找对应的版本) add jar /opt/local/hive/lib/hive-contrib-.ja ...

  4. oozie4.3.0+sqoop1.4.6实现mysql到hive的增量抽取

    1.准备数据源 mysql中表bigdata,数据如下: 2. 准备目标表 目标表存放hive中数据库dw_stg表bigdata 保存路径为 hdfs://localhost:9000/user/h ...

  5. 将Hive统计分析结果导入到MySQL数据库表中(一)——Sqoop导入方式

    https://blog.csdn.net/niityzu/article/details/45190787 交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HB ...

  6. 使用 sqoop 将mysql数据导入到hive表(import)

    Sqoop将mysql数据导入到hive表中 先在mysql创建表 CREATE TABLE `sqoop_test` ( `id` ) DEFAULT NULL, `name` varchar() ...

  7. Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递

    http://niuzhenxin.iteye.com/blog/1706203   Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...

  8. hive和hbase本质区别——hbase本质是OLTP的nosql DB,而hive是OLAP 底层是hdfs,需从已有数据库同步数据到hdfs;hive可以用hbase中的数据,通过hive表映射到hbase表

    对于hbase当前noSql数据库的一种,最常见的应用场景就是采集的网页数据的存储,由于是key-value型数据库,可以再扩展到各种key-value应用场景,如日志信息的存储,对于内容信息不需要完 ...

  9. HDFS文件和HIVE表的一些操作

    1. hadoop fs -ls  可以查看HDFS文件 后面不加目录参数的话,默认当前用户的目录./user/当前用户 $ hadoop fs -ls 16/05/19 10:40:10 WARN ...

随机推荐

  1. sublime使用技巧之添加到右键菜单、集成VI

    熟悉开发工具,减少多余的操作流程有助于提高开发效率,而Sublime Text 2是sublime产品的经典版本,因此本文基于Sublime Text 2讲解sublime的使用技巧. VI的主要作用 ...

  2. Web大前端面试题-Day6

    1.请说明ECMAScript, JavaScript, Jscript之间的关系? ECMAScript提供脚本语言必须遵守的规则. 细节和准则,是脚本语言的规范. 比如:ES5,ES6就是具体的一 ...

  3. 项目冲刺 Seventh

    Seventh Sprint 1.各个成员今日完成的任务 蔡振翼:编写博客 谢孟轩:消息功能的实现,各页面与功能的调试优化 林凯:优化注册判断逻辑,整合相关代码 肖志豪:帮助组员 吴文清:完成管理员信 ...

  4. 洛谷.3391.[模板]文艺平衡树(Splay)

    题目链接 //注意建树 #include<cstdio> #include<algorithm> const int N=1e5+5; //using std::swap; i ...

  5. centos7下安装gcc7

    之前写过在linux下升级gcc 4.8至gcc 4.9的过程,现在gcc最新的版本是8,有些软件必须是gcc 7或者以上的版本才可以编译,比如clickhouse,gcc 7的安装过程和之前基本上一 ...

  6. 用户人品预测大赛--TNT_000队--竞赛分享

     用户人品预测大赛--TNT_000队--竞赛分享  DataCastle运营 发表于 2016-3-24 14:29:57      887  0  0 答辩PPT 0 回复     用户反馈 隐私 ...

  7. Learning to rank的讲解,单文档方法(Pointwise),文档对方法(Pairwise),文档列表方法(Listwise)

    学习排序(Learning to Rank) LTR(Learning torank)学习排序是一种监督学习(SupervisedLearning)的排序方法.LTR已经被广泛应用到文本挖掘的很多领域 ...

  8. 微软BI 之SSAS 系列 - 多维数据集维度用法之三 多对多维度 Many to Many

    开篇介绍 对于维度成员和事实数据直接的关系看到更多的可能还是一对一,一对多的关系.比方在事实维度(或退化维度)中一个订单和明细号组合而成的ID,对应的就是事实表中的一条数据,这就是一对一的关系.比方说 ...

  9. angularjs使用ui-router切换视图, 自动滚动到顶部

    ui-view Examples for autoscroll: <ui-view autoscroll/> <!-- If autoscroll present with no e ...

  10. tmux 共享窗口大小

    http://www.cnblogs.com/bamanzi/p/tmux-share-windows-between-sessions.html