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. TFT LCD显示原理详解

    <什么是液晶> 我们一般认为物体有三态:固态.液态.气态,其实这只是针对水而言,有一些有机化和物 还有介于固态和液态中间的状态 就是液晶态,如下图(一):                 ...

  2. win 10 主题 美化

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha ========= 桌面背景,锁屏背景,文件名字,色调,文件夹 详细信息 显示 设置, ...

  3. CF868 F. Yet Another Minimization Problem 决策单调优化 分治

    目录 题目链接 题解 代码 题目链接 CF868F. Yet Another Minimization Problem 题解 \(f_{i,j}=\min\limits_{k=1}^{i}\{f_{k ...

  4. 51Nod.1244.莫比乌斯函数之和(杜教筛)

    题目链接 map: //杜教筛 #include<map> #include<cstdio> typedef long long LL; const int N=5e6; in ...

  5. 滑动CheckBox样式

    <Style x:Key="SliderCheckBox" TargetType="{x:Type CheckBox}"> <Setter P ...

  6. Altium Designer Summer 09换成中文步骤

    1.打开Altium Designer Summer 09软件,在左上角file文件中点击,再打开Preferences出现如下,然后关闭软件在打开就完成了

  7. [TC14126]BagAndCards

    [TC14126]BagAndCards 题目大意: 有\(n(n\le500)\)个袋子,第\(i\)个袋子里有\(count[i][j]\)张值为\(j(j\le m\le500)\)的牌.给一个 ...

  8. BeautifulSoup库的使用方法

    from bs4 import BeautifulSoup import lxml html = ''' <html><head><title>The Dormou ...

  9. 基于Python的SQLAlchemy的操作

    安装 在Python使用SQLAlchemy的首要前提是安装相应的模块,当然作为python的优势,可以到python安装目录下的scripts下,同时按住shift+加上鼠标左键,从而在菜单中打开命 ...

  10. 树莓派.Qt.Creator安装方法

    树莓派硬件: Raspberry Pi 3 B 树莓派系统: Linux version 4.9.59-v7+ (32位) Qt版本(x86版本--32位): 安装过程 可以查看软件仓库支持的版本: ...