Hi,

这个报错看起来确实很奇怪,你可以给一个完整的使用SQL吗,这样可以方便去复现一下。


> -----原始邮件-----
> 发件人: "junjie.m...@goupwith.com" <junjie.m...@goupwith.com>
> 发送时间: 2023-08-03 17:05:03 (星期四)
> 收件人: user-zh <user-zh@flink.apache.org>
> 抄送: 
> 主题: 自定义ScalarFunction函数运行报错
> 
> public static class MatrixToRowFunction extends ScalarFunction {
>     @DataTypeHint("ROW<num_rows INT, num_cols INT, values ARRAY<DOUBLE>>")
>     public Row eval(@DataTypeHint(value = "RAW", bridgedTo = 
> DenseMatrix.class) DenseMatrix matrix) {
>         return Row.of(
>                 matrix.numRows(),
>                 matrix.numCols(),
>                 matrix.values
>         );
>     }
> }调用UDF运行报错如下:Caused by: org.apache.flink.table.api.ValidationException: 
> Invalid input arguments. Expected signatures are:
> MatrixToRowFunction(matrix => RAW('org.apache.flink.ml.linalg.DenseMatrix', 
> '...'))
> 
>       at 
> org.apache.flink.table.types.inference.TypeInferenceUtil.createInvalidInputException(TypeInferenceUtil.java:180)
> 
>       at 
> org.apache.flink.table.types.inference.TypeInferenceUtil.runTypeInferenceInternal(TypeInferenceUtil.java:331)
> 
>       at 
> org.apache.flink.table.types.inference.TypeInferenceUtil.runTypeInference(TypeInferenceUtil.java:84)
> 
>       ... 120 more
> 
> Caused by: org.apache.flink.table.api.ValidationException: Invalid argument 
> type at position 0. Data type RAW('org.apache.flink.ml.linalg.DenseMatrix', 
> '...') expected but RAW('org.apache.flink.ml.linalg.DenseMatrix', '...') 
> passed.
> 
>       at 
> org.apache.flink.table.types.inference.TypeInferenceUtil.adaptArguments(TypeInferenceUtil.java:136)
> 
>       at 
> org.apache.flink.table.types.inference.TypeInferenceUtil.adaptArguments(TypeInferenceUtil.java:100)
> 
>       at 
> org.apache.flink.table.types.inference.TypeInferenceUtil.runTypeInferenceInternal(TypeInferenceUtil.java:329)
> 
>       ... 121 more看错误信息是自相矛盾的


------------------------------
Best,
Ron

回复