如何通过 Flink Row 中的 FieldName 获取值?

How to get value by FieldName in a Flink Row?

我有一个方法def process(row: org.apache.flink.types.Row, fieldName: String) : Unit = ???

而我要进行的处理需要我提取一个名为 fieldName 的字段。我可以看到 Row api 允许您按顺序提取,但不能按名称提取。

我想用户必须向我传递架构信息,所以该方法看起来像 def process(row: org.apache.flink.types.Row, rowSchema: ???, fieldName: String) : Unit = ???

我查看了 org.apache.flink.table.types.logical.RowTypeTypeInformation 的架构信息,但它们似乎都不正确。去这里最好的方法是什么?

看来我需要 org.apache.flink.api.java.typeutils.RowTypeInfo。它有方法 getFieldIndex(String fieldName)