精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Flink SQL 知其所以然:在 Flink 中還能使用 Hive Udf?(附源碼)

數據庫 其他數據庫
本文主要介紹 flink sql 流任務中,不能使用 create temporary function 去引入一個用戶自定義的 hive udf。因此博主只能通過 flink sql 提供的 module 插件能力,自定義了 module,來支持引入用戶自定義的 hive udf。

[[440014]]

 1.序篇

廢話不多說,咱們先直接上本文的目錄和結論,小伙伴可以先看結論快速了解博主期望本文能給小伙伴們帶來什么幫助:

  • 背景及應用場景介紹:博主期望你能了解到,其實很多場景下實時數倉的建設都是隨著離線數倉而建設的(相同的邏輯在實時數倉中重新實現一遍),因此能夠在 flink sql 中復用 hive udf 是能夠大大提高人效的。
  • flink 擴展支持 hive 內置 udf:flink sql 提供了擴展 udf 的能力,即 module,并且 flink sql 也內置了 HiveModule(需要你主動加載進環境),來支持一些 hive 內置的 udf (比如 get_json_object)給小伙伴們使用。
  • flink 擴展支持用戶自定義的 hive udf:主要介紹 flink sql 流任務中,不能使用 create temporary function 去引入一個用戶自定義的 hive udf。因此博主只能通過 flink sql 提供的 module 插件能力,自定義了 module,來支持引入用戶自定義的 hive udf。

2.背景及應用場景介紹

其實大多數公司都是從離線數倉開始建設的。相信大家必然在自己的生產環境中開發了非常多的 hive udf。隨著需求對于時效性要求的增高,越來越多的公司也開始建設起實時數倉。很多場景下實時數倉的建設都是隨著離線數倉而建設的。實時數據使用 flink 產出,離線數據使用 hive\spark 產出。

那么回到我們文章標題的問題:為什么需要 flink 支持 hive udf 呢?

博主分析了下,結論如下:

站在數據需求的角度來說,一般會有以下兩種情況:

  • 以前已經有了離線數據鏈路,需求方也想要實時數據。如果直接能用已經開發好的 hive udf,則不用將相同的邏輯遷移到 flink udf 中,并且后續無需費時費力維護兩個 udf 的邏輯一致性。
  • 實時和離線的需求都是新的,需要新開發。如果只開發一套 udf,則事半功倍。

因此在 flink 中支持 hive udf 這件事對開發人員提效來說是非常有好處的。

3.在擴展前,你需要知道一些基本概念

  • flink 支持 hive udf 這件事分為兩個部分。
  • flink 擴展支持 hive 內置 udf

flink 擴展支持用戶自定義 hive udf

第一部分:flink 擴展支持 hive 內置 udf,比如 get_json_object,rlike 等等。

有同學問了,這么基本的 udf,flink 都沒有嗎?

確實沒有。關于 flink sql 內置的 udf 見如下鏈接,大家可以看看 flink 支持了哪些 udf:https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/dev/table/functions/systemfunctions/

那么如果我如果強行使用 get_json_object 這個 udf,會發生啥呢?結果如下圖。

直接報錯找不到 udf。

第二部分:flink 擴展支持用戶自定義 hive udf。

內置函數解決不了用戶的復雜需求,用戶就需要自己寫 hive udf,并且這部分自定義 udf 也想在 flink sql 中使用。

下面看看怎么在 flink sql 中進行這兩種擴展。

4.hive udf 擴展支持

4.1.flink sql module

涉及到擴展 udf 就不得不提到 flink 提供的 module。見官網下圖。

從第一句話就可以看到,module 的作用就是讓用戶去擴展 udf 的。

flink 本身已經內置了一個 module,名字叫 CoreModule,其中已經包含了一些 udf。

那我們要怎么使用 module 這玩意去擴展我們的 hive udf 呢?

4.2.flink 擴展支持 hive 內置 udf

步驟如下:

引入 hive 的 connector。其中包含了 flink 官方提供的一個 HiveModule。在 HiveModule 中包含了 hive 內置的 udf。

  1. <dependency> 
  2.     <groupId>org.apache.flink</groupId> 
  3.     <artifactId>flink-connector-hive_${scala.binary.version}</artifactId> 
  4.     <version>${flink.version}</version> 
  5. </dependency> 

在 StreamTableEnvironment 中加載 HiveModule。

  1. String name = "default"
  2. String version = "3.1.2"
  3. tEnv.loadModule(name, new HiveModule(version)); 

然后在控制臺打印一下目前有的 module。

  1. String[] modules = tEnv.listModules(); 
  2. Arrays.stream(modules).forEach(System.out::println); 

然后可以看到除了 core module,還有我們剛剛加載進去的 default module。

  1. default 
  2. core 

查看所有 module 的所有 udf。在控制臺打印一下。

  1. String[] functions = tEnv.listFunctions(); 
  2. Arrays.stream(functions).forEach(System.out::println); 

就會將 default 和 core module 中的所有包含的 udf 給列舉出來,當然也就包含了 hive module 中的 get_json_object。

然后我們再去在 flink sql 中使用 get_json_object 這個 udf,就沒有報錯,能正常輸出結果了。

使用 flink hive connector 自帶的 HiveModule,已經能夠解決很大一部分常見 udf 使用的問題了。

4.2.flink 擴展支持用戶自定義 hive udf

原本博主是直接想要使用 flink sql 中的 create temporary function 去執行引入自定義 hive udf 的。

舉例如下:

  1. CREATE TEMPORARY FUNCTION test_hive_udf as 'flink.examples.sql._09.udf._02_stream_hive_udf.TestGenericUDF'

發現在執行這句 sql 時,是可以執行成功,將 udf 注冊進去的。

但是在后續 udf 初始化時就報錯了。具體錯誤如下圖。直接報錯 ClassCastException。

看了下源碼,flink 流環境下(未連接 hive catalog 時)在創建 udf 時會認為這個 udf 是 flink 生態體系中的 udf。

所以在初始化我們引入的 TestGenericUDF 時,默認會按照 flink 的 UserDefinedFunction 強轉,因此才會報強轉錯誤。

那么我們就不能使用 hive udf 了嗎?

錯誤,小伙伴萌豈敢有這種想法。博主都把這個標題列出來了(牛逼都吹出去了),還能給不出解決方案嘛。

思路見下一章節。

4.3.flink 擴展支持用戶自定義 hive udf 的增強 module

其實思路很簡單。

使用 flink sql 中的 create temporary function 雖然不能執行,但是 flink 提供了插件化的自定義 module。

我們可以擴展一個支持用戶自定義 hive udf 的 module,使用這個 module 來支持自定義的 hive udf。

實現的代碼也非常簡單。簡單的把 flink hive connector 提供的 HiveModule 做一個增強即可,即下圖中的 HiveModuleV2。

使用方式如下圖所示:

然后程序就正常跑起來了。

肥腸滴好用!

5.總結與展望

本文主要介紹了如果在 flink sql 使用 hive 內置 udf 及用戶自定義 hive udf,總結如下:

  • 背景及應用場景介紹:博主期望你能了解到,其實很多場景下實時數倉的建設都是隨著離線數倉而建設的(相同的邏輯在實時數倉中重新實現一遍),因此能夠在 flink sql 中復用 hive udf 是能夠大大提高人效的。
  • flink 擴展支持 hive 內置 udf:flink sql 提供了擴展 udf 的能力,即 module,并且 flink sql 也內置了 HiveModule(需要你主動加載進環境),來支持一些 hive 內置的 udf (比如 get_json_object)給小伙伴們使用。
  • flink 擴展支持用戶自定義的 hive udf:主要介紹 flink sql 流任務中,不能使用 create temporary function 去引入一個用戶自定義的 hive udf。因此博主只能通過 flink sql 提供的 module 插件能力,自定義了 module,來支持引入用戶自定義的 hive udf。

 

責任編輯:姜華 來源: 大數據羊說
相關推薦

2022-05-22 10:02:32

CREATESQL 查詢SQL DDL

2022-06-10 09:01:04

OverFlinkSQL

2022-07-05 09:03:05

Flink SQLTopN

2022-06-06 09:27:23

FlinkSQLGroup

2022-05-18 09:02:28

Flink SQLSQL字符串

2021-12-09 06:59:24

FlinkSQL 開發

2022-05-15 09:57:59

Flink SQL時間語義

2022-06-29 09:01:38

FlinkSQL時間屬性

2022-05-27 09:02:58

SQLHive語義

2022-05-12 09:02:47

Flink SQL數據類型

2021-09-12 07:01:07

Flink SQL ETL datastream

2021-11-28 11:36:08

SQL Flink Join

2022-08-10 10:05:29

FlinkSQL

2021-11-27 09:03:26

flink join數倉

2021-12-05 08:28:39

Flink SQLbatch lookuSQL

2021-12-17 07:54:16

Flink SQLTable DataStream

2022-06-18 09:26:00

Flink SQLJoin 操作

2021-11-30 23:30:45

sql 性能異步

2021-12-06 07:15:47

開發Flink SQL

2022-05-09 09:03:04

SQL數據流數據
點贊
收藏

51CTO技術棧公眾號

欧美亚洲禁片免费| 91免费观看视频在线| 久久综合久久美利坚合众国| 蜜桃视频无码区在线观看| 黄网站在线观| 久久久久久久综合狠狠综合| 成人a视频在线观看| 国产一国产二国产三| 精品国产欧美日韩| 欧美精品一区男女天堂| 欧美三级理论片| 日日夜夜天天综合入口| 久久欧美一区二区| 91黄在线观看| 欧美 亚洲 另类 激情 另类 | 精品免费日韩av| 欧美性猛交久久久乱大交小说 | 天天操天天干天天做| 欧美极品少妇videossex| 中文字幕va一区二区三区| 高清不卡一区二区三区| 亚洲一区在线观| 性欧美长视频| 97免费视频在线| 91麻豆免费视频网站| 国内精品久久久久久久久电影网| 欧美精品一区二区久久久| 国产成人美女视频| 91av一区| 岛国视频午夜一区免费在线观看| 欧美黄色免费网址| 国产精品扒开做爽爽爽的视频| 久久久久久久精| 久久久精品动漫| 亚洲va久久久噜噜噜无码久久| 狠狠色综合日日| 国产精品美女呻吟| 五月婷婷激情视频| 日韩午夜激情| 午夜精品久久久久久99热| 青青草激情视频| 香蕉久久网站| 日韩中文字幕在线看| 久久美女免费视频| 久9久9色综合| 国产亚洲欧洲高清一区| 熟女俱乐部一区二区视频在线| 国产一区丝袜| 亚洲激情 国产| 午夜免费福利影院| 加勒比中文字幕精品| 精品欧美一区二区在线观看| 亚洲高清av一区二区三区| 日韩毛片免费视频一级特黄| 欧美视频一区在线观看| 在线观看免费黄网站| 久久xxx视频| 欧美日韩视频专区在线播放| 欧美精品久久久久久久久25p| 国产资源一区| 91精品国产手机| 先锋资源在线视频| 97视频一区| 亚洲精品日韩在线| 成人无码av片在线观看| 成人羞羞在线观看网站| 日韩视频第一页| 亚洲国产成人精品综合99| 国内久久视频| 91成人在线播放| 好吊色在线视频| 美女任你摸久久| 91精品视频在线看| 亚洲av综合色区无码一区爱av| 不卡高清视频专区| 欧美色欧美亚洲另类七区| 高清av电影在线观看| ...中文天堂在线一区| 无码人妻精品一区二区蜜桃百度| av中文资源在线资源免费观看| 岛国av一区二区三区| jizz18女人| 99久热这里只有精品视频免费观看| 亚洲精品国产综合久久| 国产精品综合激情| 欧美国产三级| 青草青草久热精品视频在线网站 | 激情aⅴ欧美一区二区欲海潮| 欧美性极品xxxx娇小| 999在线观看| 欧美挤奶吃奶水xxxxx| 亚洲最大中文字幕| 久一视频在线观看| 首页欧美精品中文字幕| 亚洲尤物视频网| 精品三级久久久久久久电影聊斋| 最新欧美精品一区二区三区| 免费一级特黄特色毛片久久看| 成人免费黄色| 日韩av在线网| 久久久久久久久久97| 国产麻豆综合| 亚洲精品日产aⅴ| 久草视频视频在线播放| 一区二区不卡在线播放| 91视频免费版污| 成人线上播放| 久久影视电视剧免费网站| 日韩精品在线免费视频| 国产成人综合在线| 五月天久久综合网| 欧美gay视频| 精品国产乱码久久久久久夜甘婷婷 | 91在线视频观看| 国产女主播av| 亚洲国产伊人| 伊人久久久久久久久久久| 日韩成人在线免费视频| 国产精品自产自拍| 亚洲午夜精品福利| 在线免费日韩片| 欧美精品一区二区在线观看| 九九精品视频免费| 免费精品视频最新在线| 欧美一区二区三区精美影视 | 午夜在线电影亚洲一区| 香蕉视频色在线观看| 精品国产aⅴ| 日韩男女性生活视频| 无码国产伦一区二区三区视频| 亚洲精品大片www| 亚洲va在线va天堂va偷拍| 国产一区二区三区四区五区传媒| 97在线视频精品| 懂色av成人一区二区三区| 亚洲精品视频在线看| 特黄视频免费观看| 手机亚洲手机国产手机日韩| 国产精品美女主播| av在线电影观看| 91搞黄在线观看| 欧美做受高潮6| 久久亚洲欧美| 欧美一级片免费观看| 韩国成人漫画| 亚洲全黄一级网站| 成人a在线视频| 亚洲精品视频久久久| 一区二区三区高清视频在线观看| 国产精品一区二区av| 秋霞午夜理伦电影在线观看| 欧美午夜片在线看| 毛片视频免费播放| 精品一区二区三区久久久| 一区二区冒白浆视频| 亚洲精品aa| 欧美www在线| 免费a视频在线观看| 亚洲国产视频在线| 激情综合丁香五月| 久久亚洲影院| 中文字幕一区二区三区精彩视频| 亚洲精品一区av| 色综合久久精品亚洲国产 | 欧美精品一区二区在线播放| 亚洲视频免费播放| 91在线视频免费观看| 欧美国产日韩在线播放| 色婷婷色综合| 95av在线视频| 182在线视频观看| 日韩精品在线免费观看视频| 波多野结衣不卡| 中文字幕亚洲在| 国产女主播在线播放| 香蕉视频成人在线观看| 日韩av在线电影观看| 国产91视频一区| av一区在线播放| 久久不射电影网| 天天干天天草天天射| 欧洲精品在线观看| 无码人妻精品一区二区三区夜夜嗨| 成人午夜精品一区二区三区| 久久久久久久久久久久久久国产| 日韩系列欧美系列| 国产精品精品软件视频| 视频在线日韩| 高清视频欧美一级| 国产露出视频在线观看| 欧美一区二区三区白人| 青草视频在线观看免费| 椎名由奈av一区二区三区| 中文字幕免费高清视频| 麻豆91精品91久久久的内涵| 69sex久久精品国产麻豆| 久久99免费视频| 亚洲一区二区在线播放| 天天免费亚洲黑人免费| 麻豆成人在线看| 精品无人乱码| 日韩你懂的电影在线观看| 在线观看污污网站| 亚洲一区二区三区四区的| 免费看黄色av| 99久久综合精品| 国产5g成人5g天天爽| 巨乳诱惑日韩免费av| youjizz.com在线观看| 欧美成人自拍| 日本一区二区三区精品视频| 澳门精品久久国产| 亚洲free性xxxx护士白浆| 高清电影一区| 91成人精品网站| 男女视频在线| 日韩三级影视基地| p色视频免费在线观看| 日韩国产欧美区| 黄色a在线观看| 欧美一级爆毛片| 91极品身材尤物theporn| 欧美性生交xxxxxdddd| 日本三级2019| 亚洲国产毛片aaaaa无费看| 很污很黄的网站| 国产三级电影在线播放| 亚洲男帅同性gay1069| 久久精品三级视频| 久久先锋影音av鲁色资源| av免费观看不卡| 国产精品性做久久久久久| 午夜剧场高清版免费观看| 日韩精品国产精品| 中国丰满人妻videoshd| 日韩午夜电影| 免费在线观看视频a| 欧美日韩亚洲一区| 欧美一级中文字幕| 欧美精品日本| 9191国产视频| 欧美fxxxxxx另类| 草草草视频在线观看| 欧美成人一品| 国产黄色激情视频| 欧美视频福利| 欧美国产日韩激情| 影音先锋国产精品| 日本十八禁视频无遮挡| 99综合视频| 春日野结衣av| 日韩精品欧美成人高清一区二区| 欧美少妇性生活视频| 日韩av电影一区| 九九精品久久久| 国产一区啦啦啦在线观看| 麻豆免费在线观看视频| 成人一级黄色片| 30一40一50老女人毛片| 国产亚洲精品资源在线26u| 国产传媒国产传媒| 最新成人av在线| 欧美成人精品一区二区免费看片| 亚洲一区二区视频| 日本一级黄色大片| 日韩欧美成人精品| 亚洲天堂视频在线| 欧美一区二区三区在线看| 亚洲国产精品久久久久久6q| 亚洲国产成人久久| 三级视频在线| 最新国产成人av网站网址麻豆| av在线下载| 97超级碰在线看视频免费在线看| 日韩成人影音| 91视频免费在线| 欧洲亚洲一区二区三区| 日本在线观看不卡| 欧美在线日韩| 无码aⅴ精品一区二区三区浪潮 | 日本高清不卡的在线| 韩日精品一区| 91福利视频导航| 伊甸园亚洲一区| 小说区视频区图片区| 亚洲国产导航| 国产喷水theporn| 国产成人精品亚洲777人妖| 国产男女猛烈无遮挡a片漫画| 国产精品沙发午睡系列990531| 国产亚洲精品码| 欧美日韩国产小视频在线观看| av av片在线看| 亚洲欧美中文字幕| 2024最新电影免费在线观看| 欧美性受xxx| 久久视频免费| 日本一区免费在线观看| 欧美~级网站不卡| 我看黄色一级片| 成人av片在线观看| 天天操夜夜操av| 黑人狂躁日本妞一区二区三区 | 亚洲成人一区在线观看| av在线不卡观看| 99re66热这里只有精品8| 六月丁香激情网| 国产成人精品综合在线观看 | 欧美日韩国产探花| 超碰在线97免费| 99精品欧美一区二区蜜桃免费| 一区二区国产精品精华液| 色国产精品一区在线观看| 少妇一区二区三区四区| 欧美成人激情视频免费观看| 91国内外精品自在线播放| 久久综合九色欧美狠狠| 在线不卡视频| 国产免费a级片| 亚洲精品视频一区| 在线观看av大片| 国产亚洲精品综合一区91| 伊人成综合网站| 国产在线播放一区二区| 综合一区av| 亚洲高清视频免费| 中文字幕一区二区三区四区不卡| 波多野结衣 久久| 亚洲另类激情图| 色是在线视频| 欧美成ee人免费视频| 日韩天堂av| 波多野结衣视频播放| 亚洲国产精品久久人人爱蜜臀| 午夜精品久久久久久久99| 久久精品视频网站| 91国产精品| www.亚洲一区二区| 国产麻豆精品95视频| 九九热最新地址| 欧美一级日韩不卡播放免费| 黄色网页在线观看| 亚洲xxxx做受欧美| 中文在线播放一区二区| 97人人模人人爽人人澡| 亚洲精品少妇30p| 国产激情久久久久久熟女老人av| 欧美成人精品三级在线观看| 亚洲第一二区| 国产一线二线三线女| 不卡高清视频专区| 精品欧美一区二区三区免费观看 | 精品人妻无码一区二区三区| 欧美性感美女h网站在线观看免费| 毛片免费在线播放| 国产精品久久在线观看| 久久精品不卡| av在线网站免费观看| 一区二区三区在线视频观看| 人妻无码中文字幕免费视频蜜桃| 午夜精品福利视频| 国产精品片aa在线观看| 亚洲精品视频导航| 亚洲视频免费在线| 亚洲av无码国产精品永久一区| 久久久久在线观看| 免费久久久久久久久| 中文字幕天天干| 一区二区不卡在线视频 午夜欧美不卡在| 午夜美女福利视频| 4p变态网欧美系列| 日韩欧美精品一区| 男人添女人荫蒂国产| 欧美丝袜一区二区| 日本三级在线播放完整版| 国产高清一区视频| 久久亚洲欧洲| 青青草成人免费| 亚洲人高潮女人毛茸茸| 偷拍自拍亚洲| 欧美在线一区视频| 欧美极品xxx| 成人午夜视频一区二区播放| 日韩美女在线播放| 亚洲成人国产| 一本加勒比北条麻妃| 69精品人人人人| 偷拍自拍在线看| 国产日韩视频在线播放| 91免费视频网址| 精品国产伦一区二区三| 日韩av免费一区| 欧美天天视频| 一级片黄色录像| 日韩成人在线观看| 国产精一区二区| 国产精品无码一本二本三本色| 亚洲人成小说网站色在线| 日本1级在线| 国产98在线|日韩|