Hive扩展功能(三)--使用UDF函数将Hive中的数据插入MySQL中

软件环境:

linux系统: CentOS6.7
Hadoop版本: 2.6.5
zookeeper版本: 3.4.8

##主机配置:
######一共m1, m2, m3这五部机, 每部主机的用户名都为centos
```
192.168.179.201: m1
192.168.179.202: m2
192.168.179.203: m3

m1: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Master, Worker

m2: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Worker

m3: Zookeeper, DataNode, NodeManager, Worker



---
<br>
<br>
####说明:
使用UDF函数将Hive中的数据插入MySQL中, 需先在Hive中创建一个UDF临时函数, 然后通过该临时函数将数据从Hive插入到MySQL中 ---
<br>
####1.创建临时函数
启动Hive服务, 在Hive中创建UDF临时函数, 如以下例子: (dboutput: 临时函数名)

CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput';



---
<br>
####2.将hive表中的数据直接插入mysql中
####规范:

select dboutput('jdbc:mysql://localhost/dbName','userName','passWord','INSERT INTO mysqlTableName(column1, column2, column3, column4) VALUES (?,?,?,?)', column1, column2, column3, column4) from hiveTableName;


####例子:

select dboutput('jdbc:mysql://m1/result','root','123','INSERT INTO bill_comp_archive(time, uid, billId, archiveId) VALUES (?,?,?,?)', time,uid,billId,archiveId) from bill_comp_archive;


####语法解析:

dboutput: 临时函数

m1: 目标mysql所在的主机的IP地址或主机名

result: 目标mysql中的数据库名

root: 登录mysql的用户名

123: 登录mysql的密码

INSERT INTO bill_comp_archive: "bill_comp_archive" 为mysql中的表名

VALUES (?,?,?,?): 括号中的为字段的数据类型, ?表示通用的数据类型

from bill_comp_archive: "bill_comp_archive"为hive中的数据库



---
<br>
####3.报错返回信息

输出有3个:

0: 成功

1: SQL语法错误

2: 数据库连接错误



---
<br>
<br>
<br>
上一篇:bzoj4784 [Zjoi2017]仙人掌


下一篇:NOI-1.1-08-字符三角形