[英]How to call Groovy or Scala UDF to update Oracle, using Java?
[英]How to call spark UDF from scala using reflection?
我正在構建一個依賴於 java 庫的 spark 應用程序。 公開的 Java 接口是
String doSomething(String, Map<String,String>)
我創建了一個 UDF 作為
def myfunc(properties: Map[String, String]) = udf((data: String) => {
...
doSomething(data,properties)
})
這個函數可以從 spark shell 中調用為myfunc(properties)(data)
,其中屬性是一個地圖,數據是列類型。
問題是我需要通過 Scala 文件的反射來調用它。 我需要做這樣的事情:
val c = Class.forName("package.class")
val m = c.getMethod("myfunc",classOf[Map[String,String]])
m.invoke(c.newInstance, someMap)
m.invoke 返回函數本身。 如何以及在何處傳遞 Column 參數? 或者有沒有其他方法可以將這些屬性映射傳遞給觸發 UDF,以便可以通過反射直接調用它?
嘗試
m.invoke(c.newInstance, someMap).asInstanceOf[UserDefinedFunction].apply(data)
對於Column
類型的data
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.