1. 创建临时function (这里两个包都是hive自带的,不需要自己开发的,可以根据名称查找对应的版本)

add jar /opt/local/hive/lib/hive-contrib-2.3..jar;
add jar /opt/local/hive/lib/mysql-connector-java-5.1.-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..jar;
add jar /opt/local/hive/lib/mysql-connector-java-5.1.-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= \
-hivevar url=jdbc:mysql://dwdev-name2/bigdata \
-hivevar username=mysql \
-hivevar password=123456

执行过程如下:

查看mysql 中记录:

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

创建function实现hive表结果导出到mysql的更多相关文章

  1. 从hive将数据导出到mysql(转)

    从hive将数据导出到mysql http://abloz.com 2012.7.20 author:周海汉 在上一篇文章<用sqoop进行mysql和hdfs系统间的数据互导>中,提到s ...

  2. hive表数据导出到csv乱码原因及解决方案

    转载自http://blog.csdn.net/lgdlxc/article/details/42126225 Hive表中的数据使用hive - e"select * from table ...

  3. 根据JSON创建对应的HIVE表

    本文提供一种用SCALA把JSON串转换为HIVE表的方法,由于比较简单,只贴代码,不做解释.有问题可以留言探讨 package com.gabry.hiveimport org.json4s._im ...

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

    hive表增量抽取到oracle数据库的通用程序(一) hive表增量抽取到oracle数据库的通用程序(二) 这几天又用到了该功能了,所以又改进了一版,增加了全量抽取和批量抽取两个参数.并且可以设置 ...

  5. Hive表数据导出

    方式一: hadoop命令导出 hadoop fs -get hdfs://hadoop000:8020/data/page_views2 pv2  方式二:通过insert...directory导 ...

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

    https://blog.csdn.net/niityzu/article/details/45190787 交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HB ...

  7. 利用sqoop将hive数据导入导出数据到mysql

    一.导入导出数据库常用命令语句 1)列出mysql数据库中的所有数据库命令  #  sqoop list-databases --connect jdbc:mysql://localhost:3306 ...

  8. 使用 sqoop 将mysql数据导入到hive表(import)

    Sqoop将mysql数据导入到hive表中 先在mysql创建表 CREATE TABLE `sqoop_test` ( `id` ) DEFAULT NULL, `name` varchar() ...

  9. flume的sink写入hive表

    flume的配置文件如下: a1.sources=r1 a1.channels=c1 a1.sinks=s1 a1.sources.r1.type=netcat a1.sources.r1.bind= ...

随机推荐

  1. Android SDK Manager详解

    Android基础知识——Android SDK Manager详解   做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本.buildTools版本等等. ...

  2. MySQL各类日志文件相关变量介绍

    文章转自:http://www.ywnds.com/?p=3721 MySQL各类日志文件相关变量介绍 查询所有日志的变量   1 mysql> show global variables li ...

  3. PhotoShop CS6学习笔记

    学习目的是能够处理正常的数码照片,稍作修饰即可.高级功能不做要求.但笔记还是要做的,以后翻翻可以加深记忆. 对于平面设计来说,软件是基础,创意是灵魂. 1. 位图与矢量图 位图,又称为点阵图像或绘制图 ...

  4. Python Tkinter基础控件入门实例

    分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...

  5. mysql SQLyog导入csv数据失败怎么办?

    分享下mysql使用SQLyog导入csv数据失败的解决方法 给mysql导入数据,选中某个表选择导入--导入使用本地csv数据即可,单有的时候不知道什么问题导入不成功!!! 给mysql导入数据,使 ...

  6. Javascript的&&和||的另类用法

    Javascript的&&和||的另类用法. 又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直 ...

  7. Oracle根据表生成系统流水号

    1.建表tablewater create table TABLEWATER ( tb_id INTEGER not null, vc_table_name ), num_water_no ) )vc ...

  8. (原创)composite模式和bridge模式是天生的好朋友

    composite模式的意图是:将对象组合成树形结构以表示“部分-整体”的层次结构.composite使得用户对单个对象和组合对象的使用具有一致性.它的类图如下: composite模式的实现分为透明 ...

  9. tornado源码分析-多进程

    1.源码文件 process.py 2.fork子进程 def fork_processes(num_processes, max_restarts=100): ... def start_child ...

  10. (转)go语言nsq源码解读二 nsqlookupd、nsqd与nsqadmin

    转自:http://www.baiyuxiong.com/?p=886 ---------------------------------------------------------------- ...