Skip to content

Apache Flink connector docs#5527

Open
kurnoolsaketh wants to merge 13 commits intomainfrom
flink-connector-docs
Open

Apache Flink connector docs#5527
kurnoolsaketh wants to merge 13 commits intomainfrom
flink-connector-docs

Conversation

@kurnoolsaketh
Copy link
Contributor

Summary

Introduce documentation for the official Flink connector. This doc page is adapted from the flink connector repo's README.

@vercel
Copy link

vercel bot commented Feb 14, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
clickhouse-docs Ready Ready Preview, Comment Mar 3, 2026 1:18am
clickhouse-docs-jp Building Building Preview, Comment Mar 3, 2026 1:18am
3 Skipped Deployments
Project Deployment Actions Updated (UTC)
clickhouse-docs-ko Ignored Ignored Preview Mar 3, 2026 1:18am
clickhouse-docs-ru Ignored Ignored Preview Mar 3, 2026 1:18am
clickhouse-docs-zh Ignored Ignored Preview Mar 3, 2026 1:18am

Request Review

@alexfrancoeur
Copy link
Contributor

The docs look great! A couple of small pieces of feedback, but lgtm overall. I can't wait to get these in there

I reviewed this preview on mobile: https://clickhouse-docs-9zj3bpftf-clickhouse.vercel.app/docs/integrations/apache-flink

  • The apache flink icon in the integrations view links to the repo still, we'll need to update in the CMS to link to these docs and make it consistent across the different entry points
  • I feel like we should link to the repo explicitly early in the docs with the connector name
  • I don't know if we need the "to be filled out later" section for the table api. We could probably just remove until it's added


This is the official Apache Flink Sink Connector supported by ClickHouse. It is built using Flink's [AsyncSinkBase](https://cwiki.apache.org/confluence/display/FLINK/FLIP-171%3A+Async+Sink) and the official ClickHouse [java client](https://github.com/ClickHouse/clickhouse-java).

The connector supports Apache Flink's DataStream API. Table API support is planned for a future release.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Table API support is planned for a future release.

we can link to an issue to follow and upvote or delete the note

Copy link
Contributor Author

@kurnoolsaketh kurnoolsaketh Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'll link the issue and remove the ## Using the Table API section


### Table API Connection Options {#table-api-connection-options}

Planned for a future release — this section will be updated once available.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what immediate value the note gives, I'd consider removing it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

understood, i'll remove these sections


Notes:
* A `ZoneId` must be provided when performing date operations.
* Precision and scale must be provided when performing decimal operations.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we have an example to link to?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah - i will link directly to CH docs


## ClickHouse Version Compatibility and Security {#compatibility-and-security}

- All artifacts and versions of the connector are tested with all [active LTS versions](https://github.com/ClickHouse/ClickHouse/pulls?q=is%3Aopen+is%3Apr+label%3Arelease) of ClickHouse.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

active and LTS?

Suggested change
- All artifacts and versions of the connector are tested with all [active LTS versions](https://github.com/ClickHouse/ClickHouse/pulls?q=is%3Aopen+is%3Apr+label%3Arelease) of ClickHouse.
- All artifacts and versions of the connector are tested with all [active and LTS versions](https://github.com/ClickHouse/ClickHouse/pulls?q=is%3Aopen+is%3Apr+label%3Arelease) of ClickHouse.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Copy link
Contributor

@BentsiLeviav BentsiLeviav left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a few comments. In addition, can we go over the repo and find relevant locations where Flink is mentioned, and make sure we link them to this page?

Found these locations, but we might have more:

ClickHouseClientConfig clickHouseClientConfig = new ClickHouseClientConfig(url, username, password, database, tableName);
```

Let's say you want to insert RAW CSV data as is:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you change this example to be copy-pastable like we have here?

If needed, you can add comments in between explaining each step.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

For more detailed instructions, see the [Example Guide](https://github.com/ClickHouse/flink-connector-clickhouse/blob/main/examples/README.md)

### DataStream API Connection Options {#datastream-api-connection-options}
#### Clickhouse Client Options {#client-options}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


For more detailed instructions, see the [Example Guide](https://github.com/ClickHouse/flink-connector-clickhouse/blob/main/examples/README.md)

### DataStream API Connection Options {#datastream-api-connection-options}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addressed by the previous comment

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tnx. Can you make it more explicit?
There are two types of settings users can tune:

With the existing phrasing, the only indication forthe clickhouse settings is by this line
Map.of(), // serverSettings.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


## Limitations {#limitations}

* Currently, the sink does not support exactly-once semantics.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In reference to what @mshustov said earlier, let's make sure we have a point and a linked issue for each of these:

  • Exactly once semantics
  • DLQ
  • TableAPI

A link for each one of these will allow the community/user to vote and give us feedback

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


### Table API Connection Options {#table-api-connection-options}

Planned for a future release — this section will be updated once available.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@kurnoolsaketh
Copy link
Contributor Author

In addition, can we go over the repo and find relevant locations where Flink is mentioned, and make sure we link them to this page?

@BentsiLeviav yes - i confirmed the locations you identified are the only other mentions of flink in the repo besides the same pages in japanese & other languages. Should I update those as well?

@kurnoolsaketh
Copy link
Contributor Author

thanks @alexfrancoeur!

  • The apache flink icon in the integrations view links to the repo still, we'll need to update in the CMS to link to these docs and make it consistent across the different entry points

i've updated the flink icon link to point to the new docs page 👍

  • I feel like we should link to the repo explicitly early in the docs with the connector name

sure will do

  • I don't know if we need the "to be filled out later" section for the table api. We could probably just remove until it's added

yup, it's removed now


The following options come directly from Flink's `AsyncSinkBase`:

| Parameters | Description | Default Value |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All options' default values are marked with N/A. If there truly are no defaults and users must always provide them, it would be worth adding a note saying these are all required (like was done in the client options section

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah that's a good callout - I think we should set sane defaults for these options, but that can be a followup.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it would be worth adding a note saying these are all required

done


## ClickHouse Version Compatibility and Security {#compatibility-and-security}

- All artifacts and versions of the connector are tested with all [active and LTS versions](https://github.com/ClickHouse/ClickHouse/pulls?q=is%3Aopen+is%3Apr+label%3Arelease) of ClickHouse.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that the CH versions are static in our workflows and not yet fully automated to be updated, we should consider being more accurate, maybe something like:

Suggested change
- All artifacts and versions of the connector are tested with all [active and LTS versions](https://github.com/ClickHouse/ClickHouse/pulls?q=is%3Aopen+is%3Apr+label%3Arelease) of ClickHouse.
- The connector is tested against a range of recent ClickHouse versions, including latest and head, via a daily CI workflow. The tested versions are updated periodically as new ClickHouse releases become active.

Adding a link to the matrix might be useful as well, so users would get an accurate status. https://github.com/ClickHouse/flink-connector-clickhouse/blob/main/.github/workflows/tests-nightly.yaml#L15

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you, i've updated this line

<Tabs groupId="client_options_example">
<TabItem value="Java" label="Java" default>

```java
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think best would be best if we give some network options as example configurations as an example (I think it will be more useful)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines +367 to +370
## Advanced and recommended usage {#advanced-and-recommended-usage}

- For optimal performance, ensure your DataStream element type is **not** a Generic type - see [here for Flink's type distinction](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/datastream/fault-tolerance/serialization/types_serialization/#flinks-typeinformation-class). Non-generic elements will avoid the serialization overhead incurred by Kryo and improve throughput to ClickHouse.
- We recommend setting `maxBatchSize` to at least 1000 and ideally between 10,000 to 100,000. See [this guide on bulk inserts](https://clickhouse.com/docs/optimize/bulk-inserts) for more information.
Copy link
Contributor Author

@kurnoolsaketh kurnoolsaketh Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

items 12 and 15 in the doc matrix

Co-authored-by: Bentsi Leviav <bentsi.997@gmail.com>
@Blargian
Copy link
Member

Blargian commented Mar 2, 2026

In addition, can we go over the repo and find relevant locations where Flink is mentioned, and make sure we link them to this page?

@BentsiLeviav yes - i confirmed the locations you identified are the only other mentions of flink in the repo besides the same pages in japanese & other languages. Should I update those as well?

@kurnoolsaketh no need to update any of the translations, there is a bot which will open a PR after this gets merged with any updates to translations.

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

Successfully merging this pull request may close these issues.

6 participants