-
Notifications
You must be signed in to change notification settings - Fork 3k
Flink: Support flink 1.14.0 #3434
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@openinx, it looks like the tests are passing for this in the latest commit. Did you solve the issues from the description? Just let us know when you're ready for a review. |
I'm still working on this to resolve the incompatibility issues between flink 1.13 and flink 1.14. The build seems does not run all the unit tests on top of flink 1.14, I left another comment in this issue. Will publish another PR to address the issues about unit tests cross flink versions. If I think this PR is ready, I will ping you, @stevenzwu and @kbendick for reviewing. Thanks. |
|
I am fine with copying all code to version specific module so that we don't have to decide which classes kept in common module vs version modules. This would be consistent with Spark version handling too. I would ask we also duplicate the code in 1.12 and 1.13 too. FLIP-27 Flink source will have different code in 1.13. We may even skip 1.12 for FLIP-27 source. Then I can start with the FLIP-27 source in 1.13 only. After it is done, we can copy code to 1.14 module. |
|
I don't have a preference about this for Flink. I think that copying will work well for Spark, but I think it's up to the people working on Flink whether to use the same strategy. |
The FLIP-27 API changes between 1.12 and 1.13 is caused by this FLINK-22133, the flink changed the basic snapshotState API, that means when @stevenzwu develop the flip-27 source reader , he will encounter the same problem as I have encountered in this issue. If we plan to keep the flink common codes in As the increase of newly introduced features for flink+iceberg integration work, I think we will encounter more and more under layer API changes , that means we will need to copy more and more classes from the common flink module to the specific versioned module. Rather than splitting the work among different Flink contributors (It is very easy to miss classes during development and review, resulting in missing tests and features), I will prefer to clone the separate code base for each flink specified version. In last week, I prefer to share the common code for flink 1.12 & flink1.13. But I changed my mind when I port the integration work for flink1.14 and realize that @stevenzwu 's flip-27 is encountering the similar issue. |
|
Since we've got this #3476 merged, let's update this PR. |
|
Ping @rdblue , any other concern ? |
|
@openinx , what about the integration with the new |
I think the flip-27 sink integration work will be merged in flink 1.13 module firstly, and then port other related flink versions. That is a bigger feature and we need to make sure it works stable for a specific flink version. |
|
@openinx I think you meant flip-17 source integration will be merged to flink 1.13 module first. @SteNicholas was asking about the new flip-143 unified sink interface, which I don't think anyone has picked that one up yet. We probably should create a separate github issue to track that work and discussions |
|
I'll take a look today. Thanks, @openinx! And thanks to everyoen for reviewing! |
|
I think this PR will need an update now because I think there are some newly introduced changes which were added into flin 1.13. |
|
Thanks, @openinx! |
Addressing the issue: #3433
Flink1.14 changes.
There are following sub-issues that we need to address:
org.apache.flink:flink-table-planner-blink_2.12explicitly in the dependencies.finishto replace the oldcloseandcloseto replace the olddispose. See this PR.MailBoxExecutorfromorg.apache.flink.streaming.api.operators.MailboxExecutortoorg.apache.flink.api.common.operators.MailboxExecutor, see: https://issues.apache.org/jira/browse/FLINK-23621StreamStatusMaintainerfromStreamSourceContext#getSourceContextmethod, pls see: FLINK-18934 and the changesflink-runtime_${scala.binary.version}has removed the scala suffix in flink 1.14, now the dependency is namedflink-runtimebecause all the scala classes has been moved into a separate dependency namedflink-scala. Pls see the PRConsidering the sub-issue.3 and sub-issue.4, the iceberg's StreamingReaderOperator has to refactor so that it could works fine with flink 1.14. But it will cause all classes in iceberg-flink that depend on StreamingReaderOperator to be moved to three modules:
Their corresponding unit tests must also be moved to three versioned module. This seems to lead to more complicated maintenance work, because we always have to distinguish which common classes should be kept in
iceberg-flinkand which incompatible classes should be moved to the three versioned module. Considering the large changes in 1.14, I decided to copy all the source codes into a separate module for maintenance.As we
iceberg-flink-1.14modules don't depend oniceberg-flinkmodules, I think it's better to move theiceberg-finkmodule's source code to theiceberg-flink-1.12module, and then make theiceberg-flink-1.13sharing the source code oficeberg-flink-1.12.Iceberg diff between flink 1.13 module and flink 1.14 module.
The diff.patch file is: