base on Apache Paimon is a lake format that enables building a Realtime Lakehouse Architecture with Flink and Spark for both streaming and batch operations. ![Paimon](https://github.com/apache/paimon/blob/master/docs/static/paimon-simple.png)
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://the-asf.slack.com/archives/C053Q2NCW8G)
Apache Paimon is a lake format that enables building a Realtime Lakehouse Architecture with Flink and Spark
for both streaming and batch operations. Paimon innovatively combines lake format and LSM structure, bringing realtime
streaming updates into the lake architecture.
Background and documentation are available at https://paimon.apache.org
`Paimon`'s former name was `Flink Table Store`, developed from the Flink community. The architecture refers to some
design concepts of Iceberg. Thanks to Apache Flink and Apache Iceberg.
## Collaboration
Paimon tracks issues in GitHub and prefers to receive contributions as pull requests.
## Mailing Lists
<table class="table table-striped">
<thead>
<th class="text-center">Name</th>
<th class="text-center">Subscribe</th>
<th class="text-center">Digest</th>
<th class="text-center">Unsubscribe</th>
<th class="text-center">Post</th>
<th class="text-center">Archive</th>
</thead>
<tr>
<td>
<strong>user</strong>@paimon.apache.org<br>
<small>User support and questions mailing list</small>
</td>
<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:
[email protected]">Subscribe</a></td>
<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:
[email protected]">Subscribe</a></td>
<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:
[email protected]">Unsubscribe</a></td>
<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:
[email protected]">Post</a></td>
<td class="text-center">
<a href="https://lists.apache.org/
[email protected]">Archives</a>
</td>
</tr>
<tr>
<td>
<strong>dev</strong>@paimon.apache.org<br>
<small>Development related discussions</small>
</td>
<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:
[email protected]">Subscribe</a></td>
<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:
[email protected]">Subscribe</a></td>
<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:
[email protected]">Unsubscribe</a></td>
<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:
[email protected]">Post</a></td>
<td class="text-center">
<a href="https://lists.apache.org/
[email protected]">Archives</a>
</td>
</tr>
</table>
<b style="color:red">Please make sure you are subscribed to the mailing list you are posting to!</b> If you are not subscribed to the mailing list, your message will either be rejected (dev@ list) or you won't receive the response (user@ list).
## Slack
You can join the Paimon community on Slack. Paimon channel is in ASF Slack workspace.
- Anyone with an @apache.org email address can become a full member of the ASF Slack workspace.
Search [Paimon channel](https://the-asf.slack.com/archives/C053Q2NCW8G) and join it.
- If you don't have an @apache.org email address, you can email to `
[email protected]` to apply for an
[ASF Slack invitation](https://infra.apache.org/slack.html). Then join [Paimon channel](https://the-asf.slack.com/archives/C053Q2NCW8G).
## Building
JDK 8/11 is required for building the project. Maven version >=3.3.1.
- Run the `mvn clean install -DskipTests` command to build the project.
- Run the `mvn spotless:apply` to format the project (both Java and Scala).
- IDE: Mark `paimon-common/target/generated-sources/antlr4` as Sources Root.
## How to Contribute
[Contribution Guide](https://paimon.apache.org/docs/master/project/contributing/).
## License
The code in this repository is licensed under the [Apache Software License 2](LICENSE).
", Assign "at most 3 tags" to the expected json: {"id":"567","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"