博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
创建function实现hive表结果导出到mysql
阅读量:4513 次
发布时间:2019-06-08

本文共 1703 字,大约阅读时间需要 5 分钟。

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.genericudf.example.GenericUDFDBOutput';

 

2. dboutput使用方法

select dboutput(jdbc数据库链接,  用户名, 密码, sql语句, hive字段值) from hive表

准备一张hive表记录如下,然后在mysql中创建相同字段的表.

根据上面到规则,完整的hive脚本如下, 保存到script.q文件中:

--定义临时function,用于导出到mysqladd 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.genericudf.example.GenericUDFDBOutput';--查询hive并将结果写入mysqlselect dboutput('${url}','${username}','${password}','INSERT INTO dm_index_pv_uv(dt,tenantcode,deviceid,bourse_week,week_begin,week_end, yrmm, month_begin, month_end) VALUES(?,?,?,?,?,?,?,?,?)',dt,tenantcode,deviceid,bourse_week,week_begin,week_end, yrmm, month_begin, month_end)from dw_stg.tmp_1 where dt=${dt};

这里只能insert into记录,无法删除。下面这种写法是错误的

select dboutput('${url}','${username}','${password}','delete from dm_index_pv_uv where dt=${dt};##这行错误!!INSERT INTO dm_index_pv_uv(dt,tenantcode,deviceid,bourse_week,week_begin,week_end, yrmm, month_begin, month_end) VALUES(?,?,?,?,?,?,?,?,?)',dt,tenantcode,deviceid,bourse_week,week_begin,week_end, yrmm, month_begin, month_end)from dw_stg.tmp_1 where dt=${dt};

 

 

使用hive -f脚本执行。

#!/bin/shecho 'app2mysql'hive -f script.q \-hivevar dt=20181201 \-hivevar url=jdbc:mysql://dwdev-name2/bigdata \-hivevar username=mysql \-hivevar password=123456

 

执行过程如下:

查看mysql 中记录:

 

一般数据量不大的情况下,可以直接使用,还是比较方便的。省去了使用sqoop或者自己开发的麻烦。

 

转载于:https://www.cnblogs.com/30go/p/10101607.html

你可能感兴趣的文章
TFS 测试用例导入、导出工具
查看>>
java -jstack
查看>>
Test指令
查看>>
[置顶] 怎么对待重复的代码
查看>>
多种方法实现H5网页图片动画效果;
查看>>
Ubuntu/CentOS下使用脚本自动安装 Docker
查看>>
源码解读Mybatis List列表In查询实现的注意事项
查看>>
POJ 2311 Cutting Game(二维SG+Multi-Nim)
查看>>
1978 Fibonacci数列 3
查看>>
1225 八数码难题
查看>>
C#控件的闪烁问题解决方法总结
查看>>
js 冒泡事件与解决冒泡事件
查看>>
2018-2019赛季多校联合新生训练赛第七场(2018/12/16)补题题解
查看>>
后台全选功能以及数据的提交方法
查看>>
Android 动画效果 及 自定义动画
查看>>
const与#define相比有什么不同?
查看>>
Eclipse4.7 SpringIDE插件的安装
查看>>
C#面向对象基础
查看>>
Jquery页面加载效果
查看>>
ios对new Date() 的兼容问题
查看>>