Hi,
could you maybe post the query that caused the exception? I guess the
exception is related to a time attribute [1] for the optimizer time
attributes and timestamps make no difference however they have a
slightly different data type that might have caused the error. I think
is a bug that should be fixed, once we have more context.
Regards,
Timo
[1]
https://ci.apache.org/projects/flink/flink-docs-master/dev/table/streaming.html#time-attributes
Am 14.09.18 um 10:49 schrieb Yuan,Youjun:
Hi,
I am getting the following error while submitting job to a cluster,
which seems failed to compare 2 RelDateTypes, though they seems
identical (from the error message), and everything is OK if I run it
locally.
I guess calcite failed to compare the first field named *ts*, of type
*TIMESTAMP(3)*, because:
* If I don’t select ts, then everything goes fine
* If I cast ts to other type, like SELECT cast(ts AS TIMESTAMP),
then everything is fine
* If I switch to EventTime, the issue also goes away. Currently it’s
ProcessTime
I am using Flink 1.4, and submitting job to a standalone cluster.
Below are the error:
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Caused by: org.apache.flink.client.program.ProgramInvocationException:
The program caused an error:
at
org.apache.flink.client.program.OptimizerPlanEnvironment.getOptimizedPlan(OptimizerPlanEnvironment.java:93)
at
org.apache.flink.client.program.ClusterClient.getOptimizedPlan(ClusterClient.java:334)
at
org.apache.flink.runtime.webmonitor.handlers.JarActionHandler.getJobGraphAndClassLoader(JarActionHandler.java:76)
at
org.apache.flink.runtime.webmonitor.handlers.JarRunHandler.lambda$handleJsonRequest$0(JarRunHandler.java:69)
... 9 more
Caused by: java.lang.AssertionError: Conversion to relational algebra
failed to preserve datatypes:
validated type:
RecordType(TIMESTAMP(3) NOT NULL ts, VARCHAR(65536) CHARACTER SET
"UTF-16LE" COLLATE "ISO-8859-1$en_US$primary" userId, VARCHAR(65536)
CHARACTER SET "UTF-16LE" COLLATE "ISO-8859-1$en_US$primary" batchId,
VARCHAR(65536) CHARACTER SET "UTF-16LE" COLLATE
"ISO-8859-1$en_US$primary" projectId, VARCHAR(65536) CHARACTER SET
"UTF-16LE" COLLATE "ISO-8859-1$en_US$primary" vehicleId, CHAR(5)
CHARACTER SET "UTF-16LE" COLLATE "ISO-8859-1$en_US$primary" NOT NULL
field0, VARCHAR(65536) CHARACTER SET "UTF-16LE" COLLATE
"ISO-8859-1$en_US$primary" rule0, DOUBLE threshold0, DOUBLE
field_value0, VARCHAR(65536) CHARACTER SET "UTF-16LE" COLLATE
"ISO-8859-1$en_US$primary" alarmId) NOT NULL
converted type:
RecordType(TIMESTAMP(3) NOT NULL ts, VARCHAR(65536) CHARACTER SET
"UTF-16LE" COLLATE "ISO-8859-1$en_US$primary" userId, VARCHAR(65536)
CHARACTER SET "UTF-16LE" COLLATE "ISO-8859-1$en_US$primary" batchId,
VARCHAR(65536) CHARACTER SET "UTF-16LE" COLLATE
"ISO-8859-1$en_US$primary" projectId, VARCHAR(65536) CHARACTER SET
"UTF-16LE" COLLATE "ISO-8859-1$en_US$primary" vehicleId, CHAR(5)
CHARACTER SET "UTF-16LE" COLLATE "ISO-8859-1$en_US$primary" NOT NULL
field0, VARCHAR(65536) CHARACTER SET "UTF-16LE" COLLATE
"ISO-8859-1$en_US$primary" rule0, DOUBLE threshold0, DOUBLE
field_value0, VARCHAR(65536) CHARACTER SET "UTF-16LE" COLLATE
"ISO-8859-1$en_US$primary" alarmId) NOT NULL
...
at
org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:451)
at
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:567)
at
org.apache.flink.table.calcite.FlinkPlannerImpl.rel(FlinkPlannerImpl.scala:106)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
thanks in advance,
youjun