hive表增量抽取到mysql(关系数据库)的通用程序(三)

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

这几天又用到了该功能了,所以又改进了一版,增加了全量抽取和批量抽取两个参数。并且可以设置每批次抽取到记录数。

使用shell脚本可以直接方便到将hive中到表抽取到任何关系型数据库中。

shell脚本到demo如下,为便于测试,将每批次处理改为2条记录:

#!/bin/sh

## !!!注意lib中jar包兼容性问题:
## 如果包含log4j-slf4j-impl-2.6.2.jar、log4j-web-2.6.2.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=‘123456‘
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, 默认分批次插入,0-分批次读取插入, 1-全部一次性读取插入
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 ‘2‘ --insert_model ‘0‘

执行文件目录结构如下:

lib文件夹放所有依赖包,lib文件夹和shell脚本同层。

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

一共4条记录,分2批次导入。

源程序下面gitee:

原文地址:https://www.cnblogs.com/30go/p/10560260.html

时间: 2024-10-08 19:53:34

hive表增量抽取到mysql(关系数据库)的通用程序(三)的相关文章

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

1.准备数据源 mysql中表bigdata,数据如下: 2. 准备目标表 目标表存放hive中数据库dw_stg表bigdata 保存路径为 hdfs://localhost:9000/user/hive/warehouse/dw_stg.db/bigdata hive中建表语句如下: create external table bigdata( class_id string comment '课程id', class_name string comment '课程名称', class_mo

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

1. 创建临时function (这里两个包都是hive自带到,不需要自己开发的,可以根据名称查找对应的版本) add jar /opt/local/hive/lib/hive-contrib-2.3.3.jar; add jar /opt/local/hive/lib/mysql-connector-java-5.1.35-bin.jar; CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.generic

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

最近在做一个交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HBase中存储,然后使用Hive外部表关联HBase,对HBase中数据进行查询.统计分析,将分析结果保存在一张Hive表中,最后使用Sqoop将该表中数据导入到MySQL中.整个流程大概如下: 下面我主要介绍Hive关联HBase表--Sqoop导出Hive表到MySQL这些流程,原始数据集收集.MapReduce清洗及WEB界面展示此处不介绍. 一.HBase数据库表 hbase(main):

使用sqoop从mysql往hive中增量导数据shell脚本

一:sqoop增量导入的两种方式 Incremental import arguments: Argument Description --check-column (col) Specifies the column to be examined when determining which rows to import. (the column should not be of type CHAR/NCHAR/VARCHAR/VARNCHAR/ LONGVARCHAR/LONGNVARCHA

SQOOP增量抽取时,在HIVE中实现类似Oracle的merge操作

数据仓库建设中的数据抽取环节,常常需要增量抽取业务库数据.但业务库数据不是一层不变的,会根据时间发生状态变更,那么就需要同步更新变化数据到HIVE中.过去在Oracle上做数据仓库时,可以使用merge的方法合并新老数据.但hive中没有该功能,本文旨在通过sqoop抽取后,自动实现数据合并. 表设计 将抽取表分为三张, 一张_arc表,保存每日合并后的快照,根据pt字段分区 一张_inc表,用于保存当日抽取的增量数据,根据pt字段分区 一张不带后缀的表,指向最终表给后续ETL任务使用. 步骤

将Hive统计分析结果导入到MySQL数据库表中(三)——使用Hive UDF或GenericUDF

前面我分别介绍了两种Hive将分析结果导入到MySQL表的两种方式:Sqoop导入方式和使用Hive.MySQL JDBC驱动,现在我介绍第三种,也是使用比较多的方式--使用Hive 自定义函数(UDF或GenericUDF)将每条记录插入到数据库表中. 一.使用UDF方式 使用UDF方式实现比较简单,只要继承UDF类,并重写evaluate方法即可 1.编写实现类 package com.gxnzx.hive.udf; import org.apache.hadoop.hive.ql.exec

通过Maxwell实时增量抽取MySQL binlog并通过stdout展示

下载Maxwell 解压Maxwell 修改MySQL的配置文件my.cnf [[email protected] etc]# vi my.cnf [mysqld] server-id = 1 binlog_format = ROW binlog_format必须设为ROW模式,如果设为其他模式,比如binlog_format = STATEMENT,启动maxwell时会报错 [[email protected] maxwell-1.17.1]# bin/maxwell --user='max

kylin2.3版本启用jdbc数据源(可以直接通过sql生成hive表,省去手动导数据到hive,并建hive表的麻烦)

说明: jdbc数据源,本质上还是hive数据源. 由于数据库做大表关联方面性能还是不行.所以kylin的默认数据源仍然是hive,我觉得是非常合理的. 对应jdbc数据源,其实就是一种便利的方式.其基本原理就是通过连接数据库,选取所要用的表(或者sql查询). 通过sqoop并行的抽取数据,并按照表名生成对应的hive表.cube的构建就根据生成的hive表进行. 每次构建的时候都重新抽取数据,生成hive表,构建完成之后,就把这个hive表删除掉. 相当于是自动做了之前开发需要 自己做的数据

Hive安装与部署集成mysql

前提条件: 1.一台配置好hadoop环境的虚拟机.hadoop环境搭建教程:稍后补充 2.存在hadoop账户.不存在的可以新建hadoop账户安装配置hadoop. 安装教程: 一.Mysql安装 1.安装mysql命令:Yum install mysql-server -y (-y参数作用为所有需要输入yes的地方默认yes) 2.打开mysql服务:Service mysqld start 3.设置mysql服务开机自启动(也可以不设置,开机手动启动):chkconfig –add my