①傳遞參數(shù)
所有需要用戶定義的函數(shù)都可以轉換成richfunction,例如實現(xiàn)map operator中你需要實現(xiàn)一個內部類,并實現(xiàn)它的map方法:
然后我們可以將其轉換為RichMapFunction:
當然,RichFuction除了提供原來MapFuction的方法之外,還提供open, close, getRuntimeContext 和setRuntimeContext方法,這些功能可用于參數(shù)化函數(shù)(傳遞參數(shù)),創(chuàng)建和完成本地狀態(tài),訪問廣播變量以及訪問運行時信息以及有關迭代中的信息。
下面我們來看看RichFuction中傳遞參數(shù)的例子,以下代碼是測試RichFilterFuction的例子,基于DataSet而非DataStream。
由代碼可見,可以將Configuration中的limit參數(shù)的值傳遞進RichFuction里面,通過后面withParameters方法傳遞進去,最后的結果是
由此可見,我從configuration中獲取了limit的值,并設定了fliter的閾值是2,從而過濾了1,2。
②傳遞廣播變量,原理和上面差不多,下面我直接把代碼貼出來:
這是目前我學習到的RichFunction的用法,和大家分享一下。





