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

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

創建包結構

編寫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添加數據)

創建數據庫

<code>

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

=

'平臺信息表'

;/<code>
編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

Sql語句

<code>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

(?, ?)

";

/<code>
編寫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添加數據)

創建臨時函數

<code>

create

temporary

function

convert_bl

as

'com.xlgl.wzy.hive.udf.PlatformConverterUDF'

;/<code>
編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

我們可以用show_functions查看函數

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

我們查看已有表的數據

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

<code>

select

ename,convert_bl(ename,

0

) lower_name

from

emp;/<code>
編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

這裡報了一個異常

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

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

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

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

再查詢一下

<code>

select

ename,convert_bl(ename,

0

) lower_name

from

emp;/<code>
編寫Hive的UDF(查詢平臺數據同時向mysql添加數據)

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

可以在mysql中查看數據

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


分享到:


相關文章: