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




說明:

使用UDF函數將Hive中的數據插入MySQL中, 需先在Hive中建立一個UDF臨時函數, 而後經過該臨時函數將數據從Hive插入到MySQL中node



1.建立臨時函數

啓動Hive服務, 在Hive中建立UDF臨時函數, 如如下例子: (dboutput: 臨時函數名)mysql

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


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中的數據庫


3.報錯返回信息

輸出有3個:
    0: 成功 
    1: SQL語法錯誤
    2: 數據庫鏈接錯誤
相關文章
相關標籤/搜索