表架构包含ObjectArray时,Table API在Flink 1.6.2上出现了一个奇怪的问题,如何解决此问题?

时间:2019-07-30 19:46:12

标签: apache-flink

针对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源代码,但是找不到根本原因。

0 个答案:

没有答案