Я создаю приложение spark, которое зависит от библиотеки Java. Интерфейс Java представлен как
String doSomething(String, Map<String,String>)
Я создал UDF как
def myfunc(properties: Map[String, String]) = udf((data: String) => {
...
doSomething(data,properties)
})
Эта функция может вызываться как 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, чтобы его можно было напрямую вызвать с помощью отражения?