Hi Xuyang,
Thanks for your response. I can provide some better context, we are migrating a
use case to FlinkSQL and they want to do some query that has a UDF like
SELECT user_id,
ARRAY_MAP(transactions, x -> x * 1.1) AS taxed_transactions
FROM users;
Based on my understanding of the API for UDFs in Flink, this will not be
possible with the current framework?
Best,
Tucker
> On May 15, 2024, at 7:42 PM, Xuyang <[email protected]> wrote:
>
> Hi, Tucker.
>
> Could you provide some examples of how you use lambda expressions?
>
> Currently, if you try to use a lambda expression as a member variable of a
> UDF class, it will fail because UDF
>
> classes are required to be serializable, and lambda expressions are not
> serializable.
>
>
>
>
> However, there are workarounds, such as marking the lambda member variable
> function with the transient modifier
>
> to prevent it from being serialized, and initializing the function in the
> overridden open method.
>
>
>
>
> I've provided an example below:
>
>
>
>
> ```
>
> public class JavaFunc22 extends ScalarFunction {
>
>
>
>
> transient Function<String, String> f;
>
>
>
>
> @Override
>
> public void open(FunctionContext context) throws Exception {
>
> f = str -> str + ":test";
>
> }
>
>
>
>
> public String eval(String s) {
>
> return f.apply(s);
>
> }
>
> }
>
>
>
>
> ```
>
>
>
>
> --
>
> Best!
> Xuyang
>
>
>
>
>
> 在 2024-05-15 23:49:50,"Tucker Harvey" <[email protected]> 写道:
>> Hi Flink Community,
>>
>> I’m writing to confirm whether lambda expressions are supported with User
>> Defined Functions (UDFs) in FlinkSQL and the Table API. My current
>> understanding is that they are not supported.
>> Can anyone verify this, or let me know if there have been any recent changes
>> regarding this?
>> Thanks for your help.
>>
>> Best regards,
>> Tucker