针对Flink Table API on Flink 1.6.2
运行简单的FLink查询时,我没有发现列异常。
例外日志:
Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Column 'data.interaction.action_type' not found in table 'mycable'
当我将Flink版本更改回1.5.2时,它又可以工作了。 并且我发现mytable模式具有一个objectarray,它是一个可为空的值,当我删除该数组定义时,该查询在1.6.2中再次起作用。
表查询:
SELECT * FROM mycable WHERE data.interaction.action_type ='Complete' or data.interaction.action_type ='Cancelled'
表架构:
|-- data: Row(attributeList: ObjectArrayTypeInfo<Row(product: Row(status: String), value: String)>, interaction: Row(action_type: String), tool: Row(ticket_number: String), customerAccount: Row(billingId: String), info: Row(timestamp: BigDecimal))
|-- entityId: String
|-- eventType: String
|-- eventSource: String
|-- timestamp: String
|-- encryption: Row(status: String)
如果我删除该对象数组,它是data字段中的attributeList。 查询的工作方式如下: 表架构:
|-- data: Row(interaction: Row(action_type: String), tool: Row(ticket_number: String), customerAccount: Row(billingId: String), info: Row(timestamp: BigDecimal))
|-- entityId: String
|-- eventType: String
|-- eventSource: String
|-- timestamp: String
|-- encryption: Row(status: String)
或者,我什至更改了dataarray中objectarray的顺序,它正在工作。
我对此问题感到非常困惑,我试图理解为什么会发生这种情况,也试图阅读Flink源代码,但是找不到根本原因。