Skip to content
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

Feature: Consider supporting flink sql #451

Open
caicancai opened this issue Sep 8, 2023 · 22 comments
Open

Feature: Consider supporting flink sql #451

caicancai opened this issue Sep 8, 2023 · 22 comments

Comments

@caicancai
Copy link

Whether to consider supporting flink sql

@wmoustafa
Copy link
Contributor

Yes, it is in the roadmap, but as far as I know no one is actively working on it at the moment. Do you have a use case in mind?

@wmoustafa
Copy link
Contributor

Since Flink supports streaming, you might check out Coral's incremental view maintenance features as well. It complements streaming on the batch side.

@wmoustafa
Copy link
Contributor

@caicancai
Copy link
Author

Thank you for your answer. I will try this part of the work myself first. If there is any progress, I will be happy to contribute PR.

@wmoustafa
Copy link
Contributor

Are you thinking of Flink SQL as a dialect on the input or output side? (or which one will you focus on)?

@caicancai
Copy link
Author

caicancai commented Sep 8, 2023

Strictly speaking, I don’t think this is a conversion between dialects. I think it is a conversion between models. If it is just a conversion between dialects, why not use ANTLR to extract key information to spell SQL (if you do this, obviously this is a trap)

@caicancai
Copy link
Author

你是否认为 Flink SQL 是输入端或输出端的一种方言?(或者你会关注哪一个)?

I have tried the conversion of spark sql before, and I am still learning, and I am more concerned about spark sql and flink sql

@wmoustafa
Copy link
Contributor

Sorry should have clarified my question. When you said you would consider implementing Flink SQL integration with Coral, did you refer to integration on the input side (Flink SQL to Coral) or the output side (Coral to Flink SQL)?

@caicancai
Copy link
Author

sink

@wmoustafa
Copy link
Contributor

As in (Coral to Flink SQL)?

@caicancai
Copy link
Author

如(珊瑚到Flink SQL)?

yes

@caicancai
Copy link
Author

What I thought before was that maybe it would be easier to use a standard SQL method to convert to any other SQL dialect. But obviously your goals are much bigger

@caicancai
Copy link
Author

I hope I can make a contribution to the project in the future, because this is what I wanted to do before

@wmoustafa
Copy link
Contributor

Thanks @caicancai. Happy to collaborate.

@caicancai
Copy link
Author

Thank you for your patient reply

@aastha25
Copy link
Contributor

@caicancai thank you for picking this line of work. Please refer to the provided sample pseudo-code below to structure your code:

Convert(RelNode coralRelNode) {
          // Step 1: Convert CoralRel IR to CoralSqlNode
          CoralRelToSqlNodeConverter rel2sql = new CoralRelToSqlNodeConverter();
          SqlNode coralSqlNode = rel2sql.convert(coralRelNode);

         // Step 2: Apply Coral to Flink SQL transformations using a custom SqlShuttle
          SqlNode flinkSqlNode = coralSqlNode.accept(new CoralToFlinkSqlNodeConverter())

         // Step 3: Convert the resulting Flink SQL to a string
          String flinkSQL = flinkSqlNode.toSqlString();
}

In this code:

  1. CoralRelToSqlNodeConverter is an existing class in Coral that converts Coral IR represented as a RelNode to its SqlNode representation.
  2. To implement the CoralToFlinkSqlNodeConverter, please use DataTypeDerivedSqlCallConverter and CoralToTrinoSqlCallConverter as a reference. Each transformer in the SqlShuttle for this converter should extend SqlCallTransformer to modify the SqlCalls in the input.

By following this structure, you can effectively model your code for converting Coral IR to Flink SQL.

@wmoustafa
Copy link
Contributor

Re-opening since Flink is not yet supported.

@wmoustafa wmoustafa reopened this Sep 13, 2023
@caicancai
Copy link
Author

@aastha25 Thanks for the tip, I'll try it

@caicancai
Copy link
Author

I'm going to start trying this part out

@caicancai
Copy link
Author

I want to ask if sink is fully supported by spark sql.

@wmoustafa
Copy link
Contributor

Coral to Spark SQL is fully supported. If you notice small differences in the class organization compared to what @aastha25 shared above, expect Spark module to converge to that pattern (which @aastha25 shared) soon.

@caicancai
Copy link
Author

caicancai commented Dec 7, 2023

@wmoustafa Sorry, I was a little busy a while ago, I will start to try now.
I want to put this idea into practice

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants