在自定义函数中使用DataTypeHint("Row<t ARRAY<INT>>")时报错,错误内容为:
Caused by: java.lang.ClassCastException: class [I cannot be cast to class
[Ljava.lang.Object; ([I and [Ljava.lang.Object; are in module java.base of
loader 'bootstrap')
\tat
org.apache.flink.table.data.conversion.ArrayObjectArrayConverter.toInternal(ArrayObjectArrayConverter.java:40)
\tat
org.apache.flink.table.data.conversion.DataStructureConverter.toInternalOrNull(DataStructureConverter.java:61)
\tat
org.apache.flink.table.data.conversion.RowRowConverter.toInternal(RowRowConverter.java:75)
\tat
org.apache.flink.table.data.conversion.RowRowConverter.toInternal(RowRowConverter.java:37)
\tat
org.apache.flink.table.data.conversion.DataStructureConverter.toInternalOrNull(DataStructureConverter.java:61)
\tat StreamExecCalc$251.processElement_split9(Unknown Source)
\tat StreamExecCalc$251.processElement(Unknown Source)
\tat
org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:82)
函数内容如下:
@DataTypeHint("Row<t ARRAY<INT>>")
public Row eval() {
int[] i = new int[3];
return Row.of(i);
}
测试其它简单类型时就不会报这个错,所以不是环境问题。