我已經創建了自定義UDF的生成日誌。這些日誌可以刷新通過調用另一個API公開暴露的一個內部層。但是我想調用此API剛剛UDF的執行結束。有什麼方法確定執行一個特定的UDF調用API來完成衝洗日誌和清理。
例如當我們擴展蜂巢的GenericUDF類蜂巢UDF,有密切函數可用生命周期的UDF之後,將調用UDF的執行。
類似的方法可以在SparkSQL udf嗎?
@Krishna Kashiv
可能是ExecutorPlugin.java能幫上忙。它擁有所有你可能需要的方法。讓我知道它是否可以工作。
你需要實現該接口org.apache.spark.api.plugin.SparkPlugin
並將其公開為火花。插件= com.abc.ImplementationClass
《旅,我不認為回調功能還支持UDF。但是我們可以通過實施解決方案SparkListenerInterface或延長SparkFirehoseListener。這有一些方法這樣一個方法可能會幫助我們onStageCompleted
可以找到接口定義在這裏
一旦你實現了接口使用sparkContext.addSparkListener你可以將它添加到火花
/ * * *::DeveloperApi:: *注冊一個監聽器接收返回值從執行期間發生的事件。* / @DeveloperApi def addSparkListener(偵聽器:SparkListenerInterface):單位= {listenerBus.addToSharedQueue(聽眾)}
我們試著添加SparkListener,添加伐木工的所有類型的功能SparkListenerInterface然而根據我們的觀察,我們發現司機日誌中會生成日誌。這意味著司機節點執行回調方法。
有可能從執行器節點調用這些回調方法;隨著審計日誌刷新生成在執行器節點?