Vitor Leal
10/16/2023, 3:34 PMCaused by: java.lang.IllegalStateException: Failed to rollback to checkpoint/savepoint <s3://savepoints/gsp/savepoint-d9ef6a-babcec0db851>. Cannot map checkpoint/savepoint state for operator 8a238689f724f6c1740b0a7bf83ec304 to the new program, because the operator is not available in the new program. If you want to allow to skip this, you can set the --allowNonRestoredState option on the CLI.
I have:
table.exec.uid.generation: "ALWAYS"
table.exec.legacy-transformation-uids: "true"
I also have .disableAutoGeneratedUIDs() to ensure UIDs are explicitly set.
Why is the ID not following the default format "<id>_<transformation>" also? From https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/config/#table-exec-uid-formatVitor Leal
10/16/2023, 3:34 PMMartijn Visser
10/16/2023, 3:34 PMIs the only way through compiled plans?Yes
Martijn Visser
10/16/2023, 3:35 PMVitor Leal
10/16/2023, 3:35 PMVitor Leal
10/16/2023, 3:35 PMMartijn Visser
10/16/2023, 3:36 PMMartijn Visser
10/16/2023, 3:36 PMSET option?Vitor Leal
10/16/2023, 3:36 PMtableEnv.getConfig.getConfiguration
.setInteger("table.exec.resource.default-parallelism", jobSettings.tableParallelism)Vitor Leal
10/16/2023, 3:37 PMkafkaSource.setParallelism(settings.sourceParallelism). most of the times they are the same howeverMartijn Visser
10/16/2023, 3:37 PMVitor Leal
10/16/2023, 3:37 PMMartijn Visser
10/16/2023, 3:37 PMMartijn Visser
10/16/2023, 3:37 PMMartijn Visser
10/16/2023, 3:38 PMMartijn Visser
10/16/2023, 3:38 PMVitor Leal
10/16/2023, 3:38 PMkafkaSource -> convert to tables via .fromChangelogStream table api (joins) -> convert back to datastreams via .toChangelogStream -> windows -> kafkaSinkVitor Leal
10/16/2023, 3:38 PMMartijn Visser
10/16/2023, 3:39 PMMartijn Visser
10/16/2023, 3:40 PMRight so compiled plans are only for the table api stuff?For anything in the SQL and Table API, but not 100% implemented yet
Vitor Leal
10/16/2023, 3:40 PMMartijn Visser
10/16/2023, 3:41 PMVitor Leal
10/16/2023, 3:48 PMdebeziumData (tableA, tableB)
~> tableA (sideOutput) ~> .fromChangelogStream ~> tableEnv.createTemporaryView (Registers tableA in the catalog)
~> tableB (sideOutput) ~> .fromChangelogStream ~> tableEnv.createTemporaryView (Registers tableB in the catalog)
then we are essentially materializing MSSQL views. example of one:
CREATE VIEW viewA AS SELECT
a.col1,
b.col2
FROM tableA
JOIN tableA on tableB [...]
we have over 700 views we need to materialize. each view is a pipeline. we use Table API to do that because well we just need to copy and paste the CREATE VIEW AS SELECT [...] definition essentially.Vitor Leal
10/16/2023, 3:49 PMVitor Leal
10/16/2023, 3:52 PM.toChangelogStream(viewA).map(toKafkaProducerRecord) ~>
.toChangelogStream(viewB).map(toKafkaProducerRecord) ~> .reduce((x, y) => x.union(y)).toSink(kafkaSink)
.toChangelogStream(viewC).map(toKafkaProducerRecord) ~>Vitor Leal
10/16/2023, 4:20 PMMartijn Visser
10/16/2023, 6:06 PM