精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美性猛交xxxx偷拍洗澡| 久久精品国产精品亚洲综合| 欧美精品一区二区三区四区 | 日韩av懂色| 亚洲男帅同性gay1069| 91精品黄色| 日韩精品久久久久久久酒店| 国产精品美女久久久久久不卡| 色综合欧美在线| 亚洲综合欧美日韩| 亚洲免费成人网| 午夜一区在线| 国产一区二区三区中文| 可以看污的网站| 黑人另类精品××××性爽| 国产午夜精品福利| 亚洲a中文字幕| 日韩美女黄色片| 第一sis亚洲原创| 日韩一级大片在线| 日韩精品视频一区二区在线观看| av在线资源网| 成人一区二区三区| 国产精品欧美日韩| 劲爆欧美第一页| 国产精品嫩模av在线| 欧美一区二区在线视频| 你懂的av在线| 毛片在线不卡| www日韩大片| 成人亲热视频网站| 欧美亚洲精品天堂| 在线中文字幕第一区| 亚洲国产精品电影| 日本黄大片一区二区三区| 日韩激情av| 中文字幕成人av| 国产一区视频观看| 国产免费久久久| 天堂资源在线中文精品| 久久视频免费在线播放| 一本色道久久综合亚洲精品图片 | 亚洲福利国产精品| 亚洲乱码一区二区三区| 午夜福利视频一区二区| 国产麻豆视频精品| 国产精品久久久久91| 日本熟妇色xxxxx日本免费看| 欧美a级片视频| 亚洲剧情一区二区| 91九色蝌蚪porny| 国产精品成人**免费视频| 日本韩国欧美在线| 中国丰满人妻videoshd| av资源在线播放| 一区二区三区不卡视频在线观看| 手机福利在线视频| a√资源在线| 国产亚洲欧美一级| 欧美中日韩一区二区三区| 欧美视频在线观看一区二区三区| 国产乱码字幕精品高清av| 国产精品日韩欧美| 午夜精品久久久久久久蜜桃| 亚洲免费中文| 2019国产精品自在线拍国产不卡| 久久久久成人网站| 欧美va亚洲va日韩∨a综合色| 日韩中文在线不卡| 美国黄色特级片| 成人精品影视| 中文字幕日韩av| 欧美性受xxxx黑人| 日韩不卡一区| 视频在线观看99| 亚洲熟女毛茸茸| 97国产精品| 久久精品99久久久久久久久| 久草福利资源在线| 午夜欧美在线| 日韩视频精品在线| 日韩一级片大全| 欧美啪啪一区| 久久久视频在线| 国产 欧美 日韩 在线| 国产一区二区三区的电影| 欧美专区在线观看| 五月婷婷激情五月| 麻豆传媒一区二区三区| 成人免费在线网址| 国产小视频免费观看| 成人免费视频免费观看| 精品免费一区二区三区蜜桃| 久久精品色图| 国产日本欧洲亚洲| 波多野结衣三级在线| 蜜桃传媒在线观看免费进入| 精品成人乱色一区二区| 国产成人av影视| 精品自拍视频| 日韩欧美一级片| 2一3sex性hd| 久久不见久久见国语| 神马久久久久久| 国产精品suv一区二区| 久久精品卡一| 成人午夜黄色影院| 亚洲无码精品在线播放| 奇米影视一区二区三区| 99免费在线观看视频| 亚洲欧洲精品视频| 国产日韩欧美精品在线| 欧美 国产 精品| 超级碰碰久久| 欧美一区二区在线看| 内射中出日韩无国产剧情| 国产精品嫩草影院在线看| 色噜噜狠狠狠综合曰曰曰| 免费一级特黄特色大片| 老司机午夜精品| 精品免费国产| 影音先锋男人资源在线| 欧美网站在线观看| 日韩欧美中文视频| 欧美日韩激情在线一区二区三区| 操91在线视频| 免费又黄又爽又猛大片午夜| 国产精品亚洲а∨天堂免在线| 精品无人区一区二区三区 | 久久久加勒比| 日韩国产精品亚洲а∨天堂免| 天天操天天摸天天舔| 国产精品日韩欧美一区| av在线不卡观看| av电影在线观看网址| 精品福利一区二区| 韩国三级hd中文字幕有哪些| 成人精品久久| 日本sm极度另类视频| 亚洲精品一区二区三区区别| 国产精品亲子乱子伦xxxx裸| www.爱色av.com| 久久久精品区| 久久久成人精品| 中国a一片一级一片| 99在线视频精品| 国产日产欧美一区二区| 日本电影欧美片| 亚洲国内精品视频| 日本一二三区视频| 高清在线不卡av| 麻豆md0077饥渴少妇| 精品三区视频| 亚洲人成网站999久久久综合| 777777国产7777777| 美腿丝袜亚洲综合| 午夜精品短视频| 一区二区视频免费完整版观看| 亚洲精品国产福利| 你懂的国产视频| 国产99久久久精品| 综合视频在线观看| 农村妇女一区二区| 中文字幕在线看视频国产欧美在线看完整 | 久久久久久久性潮| www国产精品com| 亚洲天堂一二三| 自拍偷在线精品自拍偷无码专区| 爱情岛论坛亚洲首页入口章节| 国产区精品区| 国产97在线观看| 高h视频在线| 欧美日韩在线一区二区| 五月天婷婷丁香网| 麻豆精品在线观看| 欧美xxxx吸乳| 亚洲网一区二区三区| 欧美黄色三级网站| 黄色小视频免费在线观看| 亚洲主播在线播放| 午夜剧场免费看| 国产精品久久久亚洲一区| 日本一区二区视频| 亚洲国产精选| 超碰一区二区三区| 色99之美女主播在线视频| 国产色视频在线| 精品久久久久久久大神国产| 日韩欧美在线视频播放| 成人福利视频网站| 天天爱天天操天天干| 午夜亚洲福利| 日韩精品第一页| 深夜福利一区| 国产精品成av人在线视午夜片| 成人video亚洲精品| 日韩成人在线播放| 91麻豆成人精品国产| 精品久久中文字幕| 色婷婷在线视频观看| 久久蜜桃一区二区| 一区二区在线免费观看视频| 日韩中文字幕亚洲一区二区va在线| 中国老女人av| re久久精品视频| 精品国产乱码久久久久软件| 亚洲久草在线| 国产成人在线一区| 多野结衣av一区| 欧美成人午夜激情在线| 最近高清中文在线字幕在线观看| 亚洲第一免费网站| wwwav网站| 欧美乱妇一区二区三区不卡视频| 人妻 日韩精品 中文字幕| 亚洲已满18点击进入久久| 女同久久另类69精品国产| 91丨porny丨首页| 深夜视频在线观看| 国产一区二区导航在线播放| 久久久久久香蕉| 国产精品呻吟| 青青草国产精品视频| 午夜激情一区| 性欧美18一19内谢| heyzo久久| 日韩亚洲不卡在线| 视频一区中文| 蜜桃臀一区二区三区| 精品三级在线观看视频| 成人av资源网| 日韩欧洲国产| 91精品国产一区二区三区动漫| 色综合视频一区二区三区日韩| 国产精品久久久91| 88xx成人免费观看视频库 | 久草成人在线视频| 亚洲精品精品亚洲| 欧美国产日韩在线观看成人| 成人欧美一区二区三区视频网页| 亚洲一二三四视频| 国产精品你懂的| 久久久久久久久福利| 欧美激情一区三区| 91ts人妖另类精品系列| 国产精品无遮挡| 日本免费网站视频| 亚洲欧美激情视频在线观看一区二区三区 | 日本熟妇一区二区三区| 91福利精品视频| 中文字幕一区二区在线视频| 欧美日韩高清一区二区三区| 一区二区视频网站| 在线播放欧美女士性生活| 国产精品高潮呻吟av| 欧美一区二区日韩一区二区| 99热精品在线播放| 精品av综合导航| 天天操天天干天天干| 日韩精品亚洲元码| 91在线视频| 久久婷婷国产麻豆91天堂| 永久免费网站在线| 国内精品久久久久久中文字幕| 蜜桃视频在线观看免费视频| 日本午夜在线亚洲.国产| 欧美日韩精品免费观看视欧美高清免费大片| 国产精品高潮呻吟久久av无限| 国产精品原创视频| 亚洲a在线观看| 欧美激情15p| 色综合电影网| 亚洲综合激情在线| 亚洲 高清 成人 动漫| 日韩高清不卡在线| www.偷拍.com| 91年精品国产| 成人18视频免费69| 亚洲一区二区三区美女| 国产一级免费视频| 在线不卡一区二区| 天天躁日日躁狠狠躁伊人| 在线观看视频99| 欧美aaa免费| 国产精品久久久久久久app| 国产在线一区不卡| 精品91免费| 日本在线电影一区二区三区| 日韩精品一区二区免费| 老色鬼久久亚洲一区二区| 天天操夜夜操很很操| 久久久久久麻豆| 国产精品成人69xxx免费视频| 亚洲韩国一区二区三区| 在线观看国产精品视频| 精品国产欧美一区二区| 91精彩视频在线观看| 91国产视频在线| 国产精品99久久免费| 免费看国产精品一二区视频| 亚洲九九视频| 国产精品无码专区av在线播放| 国精产品一区一区三区mba视频| 午夜一区二区三区免费| 亚洲老妇xxxxxx| 中文字幕精品在线观看| 亚洲激情自拍图| v天堂福利视频在线观看| 国产成人精品久久| 加勒比色老久久爱综合网| 亚洲在线不卡| 久久综合导航| 久久久老熟女一区二区三区91| 1024国产精品| 涩涩视频在线观看| 日韩精品视频在线播放| 羞羞视频在线免费国产| 国产精品亚洲精品| 久久99性xxx老妇胖精品| 国产黄色激情视频| 寂寞少妇一区二区三区| 亚洲女优在线观看| 精品久久久中文| 国产综合视频在线| 久久国产精品视频| 国产精品99久久免费| 一区二区免费电影| 蜜桃一区二区三区在线| 亚洲a v网站| 欧美视频在线视频| 婷婷av一区二区三区| 国模吧一区二区三区| 嫩呦国产一区二区三区av| 26uuu成人| 激情六月婷婷久久| 久久久精品少妇| 欧美精品xxxxbbbb| 麻豆tv入口在线看| 成人a在线观看| 久久久久av| 国产黑丝在线视频| 亚洲黄色小说网站| 亚洲黄色小说网| 久久久久久久久久久网站| 国产 日韩 欧美 综合 一区| 蜜臀精品一区二区| 不卡一区二区三区四区| 国产小视频在线免费观看| 日韩毛片在线看| 亚洲成人看片| 亚洲精品久久久久久一区二区| 免费在线看成人av| 亚洲精品国产精品乱码在线观看| 欧美日韩在线综合| v天堂福利视频在线观看| 99影视tv| 一本色道久久综合亚洲精品不卡| av网站有哪些| 91国内精品野花午夜精品| 999国产在线视频| 国产原创欧美精品| 欧美视频二区| 国产精品一级黄片| 色久优优欧美色久优优| 午夜激情视频在线观看| 91久久极品少妇xxxxⅹ软件| 欧美日韩爆操| 毛茸茸多毛bbb毛多视频| 欧洲av在线精品| 欧美黄色激情| 国产高清在线一区| 狂野欧美一区| 三级av在线免费观看| 亚洲国产精品人久久电影| 免费日韩电影| 最新欧美日韩亚洲| 99在线精品视频| 黄色一区二区视频| 成年无码av片在线| 欧美大奶一区二区| 在线免费观看视频黄| 亚洲免费观看视频| 免费国产在线观看| 91成人免费观看| 亚洲一区日韩在线| 欧美丰满熟妇bbbbbb| 日韩电影免费观看中文字幕| 999国产精品亚洲77777| 男人天堂a在线| 国产精品久久三| 熟妇人妻av无码一区二区三区| 国产精品美女999| 亚洲第一区色| 一二三四国产精品| 亚洲国产第一页| av一级久久| 欧在线一二三四区| 亚洲成人一区二区| 蜜桃视频在线观看www社区| 麻豆av一区二区三区|