创建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.genericudf.example.GenericUDFDBOutput';
2. dboutput使用方法
select dboutput(jdbc数据库链接, 用户名, 密码, sql语句, hive字段值) from hive表
准备一张hive表记录如下,然后在mysql中创建相同字段的表.
根据上面到规则,完整的hive脚本如下, 保存到script.q文件中:
--定义临时function,用于导出到mysql 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';--查询hive并将结果写入mysql select 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/sh echo 'app2mysql'hive -f script.q \ -hivevar dt=20181201 \ -hivevar url=jdbc:mysql://dwdev-name2/bigdata \ -hivevar username=mysql \ -hivevar password=123456
执行过程如下:
查看mysql 中记录:
一般数据量不大的情况下,可以直接使用,还是比较方便的。省去了使用sqoop或者自己开发的麻烦。
创建function实现hive表结果导出到mysql相关推荐
- hive表ddl导出_Flink 1.11 与 Hive 批流一体数仓实践
简介:Flink 从 1.9.0 开始提供与 Hive 集成的功能,随着几个版本的迭代,在最新的 Flink 1.11 中,与 Hive 集成的功能进一步深化,并且开始尝试将流计算场景与Hive 进行 ...
- sqoop导出 建表_hive中orc表sqoop导出到mysql
环境: sqoop版本:1.4.6 hive版本:2.1.1 hadoop版本:2.7.3 起因: orc表导出到mysql有时碰到空字符串的问题一直没有时间整理,这次测试一下 结论: hive中为s ...
- hive mysql 字符集_创建Hive表会自动更改mysql Metastore的字符集设置
但是,当我尝试删除表格时,出现如下所示的错误. FAILED: Error in metadata: javax.jdo.JDODataStoreException: Error(s) were fo ...
- sqlserver 导出mysql,sqlserver数据(表)导出到mysql
这里说明我的工具: Navicat Premium 1 首先 navicat 连接到 sqlserver 数据库,也就是我要从这里导出那个 170 万条数据的表,然后选中表右键单击,选择导出向导 2 ...
- sqoop将hive导出到mysql_Sqoop hive导出到mysql[转]
通过Sqoop将Hive表数据导入到MySQL通常有两种情况. 第一种是将hive上某张表的全部数据导入到mysql对应的表中. 第二种是将hive上某张表中的部分数据导入到mysql对应的表中. 两 ...
- MySQL用sqoop导出乱码_Sqoop将hive数据导出到MySQL中文乱码了怎么办?
今天遇到一个问题,如下图所示,我用sqoop将hive中数据导出到mysql中,结果出现了以下情况: 经过查找资料,终于解决了问题,下面我将自己的完整解决步骤做一下记录,如果能帮到需要帮助的人,我会非 ...
- sqoop hive导出到mysql_Sqoop hive导出到mysql[转]
通过Sqoop将Hive表数据导入到MySQL通常有两种情况. 第一种是将hive上某张表的全部数据导入到mysql对应的表中. 第二种是将hive上某张表中的部分数据导入到mysql对应的表中. 两 ...
- hive 导出json格式 文件_hive中创建hive-json格式的表及查询
在hive中对于json的数据格式,可以使用get_json_object或json_tuple先解析然后查询. 也可以直接在hive中创建json格式的表结构,这样就可以直接查询,实战如下(hive ...
- 往hive表中插入与导出数据方式load ,insert ,sqoop 等方式详解
往hive数据仓库的表中导入数据,可以直接insert ,也可以选择load方式.当然也可以通过第三方工具如sqoop等将数据导入到hive当初.特别注意:hive虽然不会验证用户装载的数据和表的模式 ...
最新文章
- 小师妹学JavaIO之:File文件系统
- strcpy,memcpy,memset函数实现
- Python的可变长度参数*和**,传参序列解包,isinstance的使用
- 最课程阶段大作业之01:使用SVN实现版本控制
- Netty in action—Netty中的ByteBuf
- 一、 kettle开发、上线常见问题以及防错规范步骤
- 数据库悲观锁和乐观锁
- 微信开发工具小程序获取手机号失败
- 深度学习的可解释性!
- zoj水题分类(自己练习)
- Android中 Rect类
- 程序员常用笔记与思维导图工具
- android 人脸 动画表情包,天呐 原来动画角色的面部表情是这样做出来的
- html单元格边框斜线,excel表头三斜线 将线条的两端放在单元格的边框上
- Xcode运行报错The operation couldn’t be completed.
- 无人机利用视觉slam实现位置估计
- linux让前台程序脱离终端运行
- 图解最常用的10个机器学习算法!(必须收藏)
- 横河、力科、泰克三种示波器的触发功能对比
- Mac系统下安装RDM
热门文章
- idea导入gradle
- Ckeditor通过Ajax更新数据
- PHP:第一章——PHP中的魔术常量
- hdu1027 Ignatius and the Princess II (全排列 amp; STL中的神器)
- Golang 单例模式 singleton pattern
- Altium Designer同一个工程里不同原理图导入到不同的PCB
- ASPXspy 2.0
- nurbs建模能用MATLAB么,NURBS(matlab生成nurbs曲线图像)
- hivemetastore java,hive启动报错 hive.metastore.HiveMetaStoreClient
- 电脑任务管理器_安国戴尔电脑显示器维修,服务至上