Flink的UDF写法整理
概述
這篇博客并不是簡單地翻譯官方文檔,
而是挑選常用的信息,其他忽略(例如類型推斷這種內(nèi)容)
?
Overview
| 幾種UDF | 文檔中的解釋 | 備注 |
| Scalar functions? | map scalar values to a new scalar value. | 進一出一 |
| Table functions | map scalar values to new rows(row指的是一行數(shù)據(jù)). | 進一出多 |
| Aggregate functions? | map scalar values of multiple rows to a new scalar value. | 聚合操作 |
| Table aggregate functions | map scalar values of multiple rows to new rows. | 進多出多 |
| Async table functions | ?are special functions for table sources that perform a lookup. | 文檔里面沒寫 |
?
Function Class
udf類必須是public,不能是abstract,必須全局可訪問,non-static或者匿名的類是不允許的。
For storing a user-defined function in a persistent catalog, the class must have a default constructor and must be instantiable during runtime.
?
Mandatory and Optional Methods
這里講的是各種UDF中:
哪些函數(shù)強制要求實現(xiàn)
哪些函數(shù)是可選的,可以不實現(xiàn)。
?
| ? | 成員函數(shù) | 實現(xiàn)要求 | 哪些特殊場景下必須實現(xiàn)該函數(shù) | 備注 | 官方文檔完整實例 |
| UDF | eval | 必須實現(xiàn) | ? | 返回常見類型的數(shù)據(jù) | 完整案例 |
| UDAF | createAccumulator | 必須實現(xiàn) | ? | 返回自定義類 | 完整案例 |
| accumulate | 必須實現(xiàn) | ? | 操作自定義類 | ||
| getValue | 必須實現(xiàn) | ? | 操作自定義類 返回常見類型的數(shù)據(jù) | ||
| merge | 不要求實現(xiàn) | bounded aggregations session group window session window hop window two phase aggregation optimization | 操作自定義類 返回常見類型的數(shù)據(jù) | ||
| retract | 不要求實現(xiàn) | OVER?windows | 操作自定義類 返回常見類型的數(shù)據(jù) | ||
| UDTF | eval | 必須實現(xiàn) | ? | 返回Collector | 完整案例 |
| UDTAF | createAccumulator | 必須實現(xiàn) | ? | 操作自定義類 | 完整案例 |
| accumulate | 必須實現(xiàn) | ? | 操作自定義類 | ||
| emitValue 或 emitUpdateWithRetract 二選一 | 必須實現(xiàn) | ? | 操作Collector | ||
| merge | 不要求實現(xiàn) | session group window many?bounded aggregations unbounded session hop window aggregations | 操作自定義類 | ||
| retract | 不要求實現(xiàn) | aggregations on OVER windows | ? | ||
| emitValue | 不要求實現(xiàn) | ?bounded and window aggregations | emits the full data according to the accumulator ? Take a Top N function as an example.? | ||
| emitUpdateWithRetract | 不要求實現(xiàn) | emit values that have been updated under retract mode | Once there is an update, the method can retract old records before sending new, updated ones. The method will be used in preference to the emitValue(...) method. ? 操作Collector |
所有上述提到的函數(shù)必須被聲明為public以及非static
返回多條數(shù)據(jù)的都需要寫和Collector相關的語句。
上述表格中的所有案例都來自官方文檔的補全,并且測試通過。(需要注意例子中的value是FLINK SQL的關鍵詞,所以需要加上``,也就是`value`)
?
下面這個沒看懂
If the table aggregate function can only be applied in an OVER window, this can be declared by returning the requirement FunctionRequirement.OVER_WINDOW_ONLY in getRequirements().
- ?
Reference:
[1]User-defined Functions
[2]User-defined Sources & Sinks
[3]General User-defined Functions
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的Flink的UDF写法整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: csv->Flink SQL->Clic
- 下一篇: 股票怎么买卖怎么操作流程 股票买卖流程步