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相关推荐

  1. hive表ddl导出_Flink 1.11 与 Hive 批流一体数仓实践

    简介:Flink 从 1.9.0 开始提供与 Hive 集成的功能,随着几个版本的迭代,在最新的 Flink 1.11 中,与 Hive 集成的功能进一步深化,并且开始尝试将流计算场景与Hive 进行 ...

  2. sqoop导出 建表_hive中orc表sqoop导出到mysql

    环境: sqoop版本:1.4.6 hive版本:2.1.1 hadoop版本:2.7.3 起因: orc表导出到mysql有时碰到空字符串的问题一直没有时间整理,这次测试一下 结论: hive中为s ...

  3. hive mysql 字符集_创建Hive表会自动更改mysql Metastore的字符集设置

    但是,当我尝试删除表格时,出现如下所示的错误. FAILED: Error in metadata: javax.jdo.JDODataStoreException: Error(s) were fo ...

  4. sqlserver 导出mysql,sqlserver数据(表)导出到mysql

    这里说明我的工具: Navicat Premium 1 首先 navicat 连接到 sqlserver 数据库,也就是我要从这里导出那个 170 万条数据的表,然后选中表右键单击,选择导出向导 2 ...

  5. sqoop将hive导出到mysql_Sqoop hive导出到mysql[转]

    通过Sqoop将Hive表数据导入到MySQL通常有两种情况. 第一种是将hive上某张表的全部数据导入到mysql对应的表中. 第二种是将hive上某张表中的部分数据导入到mysql对应的表中. 两 ...

  6. MySQL用sqoop导出乱码_Sqoop将hive数据导出到MySQL中文乱码了怎么办?

    今天遇到一个问题,如下图所示,我用sqoop将hive中数据导出到mysql中,结果出现了以下情况: 经过查找资料,终于解决了问题,下面我将自己的完整解决步骤做一下记录,如果能帮到需要帮助的人,我会非 ...

  7. sqoop hive导出到mysql_Sqoop hive导出到mysql[转]

    通过Sqoop将Hive表数据导入到MySQL通常有两种情况. 第一种是将hive上某张表的全部数据导入到mysql对应的表中. 第二种是将hive上某张表中的部分数据导入到mysql对应的表中. 两 ...

  8. hive 导出json格式 文件_hive中创建hive-json格式的表及查询

    在hive中对于json的数据格式,可以使用get_json_object或json_tuple先解析然后查询. 也可以直接在hive中创建json格式的表结构,这样就可以直接查询,实战如下(hive ...

  9. 往hive表中插入与导出数据方式load ,insert ,sqoop 等方式详解

    往hive数据仓库的表中导入数据,可以直接insert ,也可以选择load方式.当然也可以通过第三方工具如sqoop等将数据导入到hive当初.特别注意:hive虽然不会验证用户装载的数据和表的模式 ...

最新文章

  1. 小师妹学JavaIO之:File文件系统
  2. strcpy,memcpy,memset函数实现
  3. Python的可变长度参数*和**,传参序列解包,isinstance的使用
  4. 最课程阶段大作业之01:使用SVN实现版本控制
  5. Netty in action—Netty中的ByteBuf
  6. 一、 kettle开发、上线常见问题以及防错规范步骤
  7. 数据库悲观锁和乐观锁
  8. 微信开发工具小程序获取手机号失败
  9. 深度学习的可解释性!
  10. zoj水题分类(自己练习)
  11. Android中 Rect类
  12. 程序员常用笔记与思维导图工具
  13. android 人脸 动画表情包,天呐 原来动画角色的面部表情是这样做出来的
  14. html单元格边框斜线,excel表头三斜线 将线条的两端放在单元格的边框上
  15. Xcode运行报错The operation couldn’t be completed.
  16. 无人机利用视觉slam实现位置估计
  17. linux让前台程序脱离终端运行
  18. 图解最常用的10个机器学习算法!(必须收藏)
  19. 横河、力科、泰克三种示波器的触发功能对比
  20. Mac系统下安装RDM

热门文章

  1. idea导入gradle
  2. Ckeditor通过Ajax更新数据
  3. PHP:第一章——PHP中的魔术常量
  4. hdu1027 Ignatius and the Princess II (全排列 amp; STL中的神器)
  5. Golang 单例模式 singleton pattern
  6. Altium Designer同一个工程里不同原理图导入到不同的PCB
  7. ASPXspy 2.0
  8. nurbs建模能用MATLAB么,NURBS(matlab生成nurbs曲线图像)
  9. hivemetastore java,hive启动报错 hive.metastore.HiveMetaStoreClient
  10. 电脑任务管理器_安国戴尔电脑显示器维修,服务至上