linux系統: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8
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
啓動Hive服務, 在Hive中建立UDF臨時函數, 如如下例子: (dboutput: 臨時函數名)mysql
CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput';
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個: 0: 成功 1: SQL語法錯誤 2: 數據庫鏈接錯誤