将 UDF 方法作为参数传递给 KSQL 中的其他 UDF
Posted
技术标签:
【中文标题】将 UDF 方法作为参数传递给 KSQL 中的其他 UDF【英文标题】:Pass UDF method as parameter to other UDF in KSQL 【发布时间】:2021-03-27 11:12:56 【问题描述】:我正在为 KSQL 引擎实现自定义库(使用 UDF),我想知道如何解决我遇到的问题之一。
我已经定义了几个 UDF,它们对传递的参数做一些事情并返回一些输出。 现在,我需要将这些 UDF(它们的调用)传递给其他 UDF。 所以结构看起来像这样:
SELECT * FROM stream s WHERE UDF_1(UDF_11(s.param1, s.param2), UDF_12(s.param3, s.param4), ...) EMIT CHANGES;
是否可以定义将其他 UDF 作为参数的 UDF?如果是,我该如何实现? 如果没有,请分享您对我如何解决问题的想法。
提前感谢您的帮助。
【问题讨论】:
没想到,谢谢! 【参考方案1】:我假设您在问方法定义的参数应该是什么?
UDF 将返回单个值,并且函数将由内而外进行评估,因此它们不是“将 UDF 作为参数”,只是返回值,通常是原始 java 类型
例如,如果你拆分一个字符串列,然后将其转换为一个 int,它必须看起来像 CAST(STRSPLIT(c, delim)[0] AS INT)
,其中转换运算符接受任何对象(这里是一个字符串),并返回一个整数,它可以进一步传递给更多的 UDF
【讨论】:
以上是关于将 UDF 方法作为参数传递给 KSQL 中的其他 UDF的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Set/HashSet 作为参数传递给 Spark 中的 UDF?