使用scala反射在spark中动态注册udf

5rgfhyps  于 2021-05-29  发布在  Spark
关注(0)|答案(0)|浏览(188)

问题:我的程序接受一个json字符串作为inpu,它包含一个udf名称、函数定义和类型。如。

{
  "udfList": [
   {
     "name": "add"
     "definition": "(x: Int, y:int) => x+y"
     "type": "(Int, Int) => Int"
   }
  ]
}

json可以包含任何函数和类型。如何使用scala反射将此字符串转换为实际函数并转换为给定类型,然后将其注册为具有给定名称的udf。
尝试:

val myFunc = """(x: Int, y:int) => x+y"""
val tb = runtimeMirror(getClass.getClassLoader).mkToolBox()
val tree = tb.parse(myFunc)
val fun =  tb.eval(tree)

我无法动态转换它,因为类型是作为字符串传递的。那么,有没有一种方法可以动态地做到这一点呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题