編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

注:圖片如果損壞,點擊文章鏈接:https://www.toutiao.com/i6812629187518530052/

可能會有一些截圖中會有錯誤提示,是因爲本地的包一直包下載有問題,截完圖已經下載好了。

創建包結構

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建一個基礎信息類

所有輸出到mysql數據庫中的自定義MR任務的自定義key均需要實現該抽象類

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

代碼內容,主要是實現org.apache.hadoop.io.WritableComparable類,其它不需要寫

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建平臺信息類

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建全局配置常數類

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

後面慢慢添加內容

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

繼續完成PlatformInfoKey,添加構造函數

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

常數類添加信息

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

根據給定的參數值,構建多個不同維度的平臺維度對象

完成參數驗證

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

然後構建平臺信息

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加write和readFields方法

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建compareTo方法

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加get/set、hashCode、toString、equals方法,自動生成就可以

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建信息業務接口和實現類

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

完成接口

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加實現類

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建一個jdbc的管理器

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

常數類添加數據庫配置

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

JdbcManager添加jdbc連接

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

關閉數據庫連接

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

繼續完成BaseInfoConverterImpl,添加默認構造函數

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加一個緩存數據類型

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

繼續完成BaseInfoConverterImpl,添加方法創建cache key

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建獲取ID的方法

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

繼續編寫

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加下面的代碼

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

補全裏面的sql語句

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加兩個參數

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

完成getConnection()

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

完成executeSql

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

設置參數

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加關閉方法

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

 

創建一個UDF,模擬數據庫平臺數據記錄

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加內容

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

添加evaluate方法

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建一個測試類

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建數據庫

create database report
DROP TABLE IF EXISTS `platform`;
CREATE TABLE `platform` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
`platform_name` varchar(45) DEFAULT NULL COMMENT '平臺名稱',
`platform_version` varchar(10) DEFAULT NULL COMMENT '平臺版本',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='平臺信息表';

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

Sql語句

String querySql = "SELECT `id` FROM `platform` WHERE `platform_name` = ? AND `platform_version` = ? order by `id`";
String insertSql = "INSERT INTO `platform`(`platform_name`, `platform_version`) VALUES(?, ?)";

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

修改配置:

連接本地數據庫

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

運行結果

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

數據庫中

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

本地測試成功開始打包項目放進集羣進行測試

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

把打包好的jar包改名爲hive_udf3.jar放到集羣裏

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

進入MySQL中創建report數據庫

create database report;

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建表platform

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

進入hive

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

把jar包添加到hive當中

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

可以用list jar 和 delete jar 分別顯示jar和刪除jar

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

創建臨時函數

create temporary function convert_bl as 'com.xlgl.wzy.hive.udf.PlatformConverterUDF';

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

我們可以用show_functions查看函數

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

我們查看已有表的數據

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

select ename,convert_bl(ename,0) lower_name from emp;

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

這裏報了一個異常

這個問題可能是出在maven給的版本和hive的版本不一樣導致可以替換成自己的版本

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

然後重新打成jar包運行一下

再查詢一下

select ename,convert_bl(ename,0) lower_name from emp;

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

 

可以在mysql中查看數據

編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章