Перейти к содержимому
Последнее обновление

Flink Doris Connector

Flink Doris Connector читает данные из кластера Doris и записывает их в него через Flink, а благодаря интеграции с Flink CDC позволяет удобно синхронизировать целые базы данных из исходных систем, таких как MySQL.

Возможности​

ВозможностьОписаниеТипичные сценарии
Чтение данных из DorisПараллельно читает данные с узлов BE, не передавая их через FE; поддерживает протоколы Thrift и Arrow Flight SQLИспользование таблицы Doris в качестве источника данных для задания Flink, массовый экспорт
Инкрементальное чтение с Doris ChangelogНепрерывно считывает изменения строк таблицы (вставки, обновления, удаления), при необходимости начиная со снимка; требуется Connector 26.4.0+ и Doris 5.0.0+Синхронизация изменений таблицы Doris с целевыми системами в реальном времени
Запись данных в DorisОбъединяет данные в пакеты во Flink и записывает их через Stream Load; поддерживает потоковую запись (на основе Checkpoint, с гарантией Exactly-Once), пакетную запись и запись через S3 TVFЗагрузка данных в реальном времени, применение изменений CDC, частичное обновление столбцов
Lookup JoinОбъединяет записи из источника в пакеты и асинхронно запрашивает таблицу измерений DorisОбогащение потоков данными измерений
Синхронизация всей базы данныхБлагодаря интеграции с Flink CDC синхронизирует целую базу данных MySQL, Oracle, PostgreSQL, SQLServer, DB2 или MongoDB одной командой, автоматически создавая таблицы и синхронизируя DDLСинхронизация баз данных бизнес-приложений с Doris в реальном времени

Все возможности доступны через FlinkSQL; чтение и запись также доступны через DataStream API. Настройки подключения описаны в разделе Параметры подключения и TLS, а соответствие типов Doris и Flink приведено в разделе Сопоставление типов данных.

Принцип работы​

Принципы работы Flink Connector с JDBC и Doris

  • Чтение: Connector получает от FE сведения о Tablet из плана запроса, а затем читает данные напрямую с узлов BE параллельно. Данные не проходят через FE, что устраняет узкое место, возникающее при последовательном чтении и записи через JDBC на одном узле FE. См. Принцип чтения.
  • Запись: Данные объединяются в пакеты в памяти Flink, а затем массово загружаются в Doris через Stream Load. По умолчанию запись выполняется в соответствии с Flink Checkpoints и использует двухфазную фиксацию для обеспечения гарантии Exactly-Once; также доступен режим пакетной записи, который не зависит от Checkpoints. См. Режимы записи.
  • Lookup Join: Записи из источника объединяются в пакеты, а запросы к таблице измерений Doris выполняются асинхронно, вместо отдельного точечного запроса для каждой записи.
  • Синхронизация всей базы данных: Изменения считываются из исходной базы данных с помощью Flink CDC и записываются через Doris Sink, который автоматически создает целевые таблицы и синхронизирует изменения схемы (Schema Changes).

Совместимость версий​

Версия ConnectorВерсия FlinkВерсия DorisВерсия JavaВерсия Scala
1.0.31.11,1.12,1.13,1.140.15+82.11,2.12
1.1.11.141.0+82.11,2.12
1.2.11.151.0+8-
1.3.01.161.0+8-
1.4.01.15 - 1.171.0+8-
1.5.21.15 - 1.181.0+8-
1.6.11.15 - 1.191.0+8-
24.0.11.15 - 1.201.0+8-
24.1.01.15 - 1.201.0+8-
25.0.01.15 - 1.201.0+8-
25.1.01.15 - 1.201.0+8-
26.0.01.15 - 1.20,2.0 - 2.21.0+8(1.x),17(2.x)-
26.1.11.15 - 1.20,2.0 - 2.21.0+8(1.x),17(2.x)-
26.2.01.15 - 1.20,2.0 - 2.21.0+8(1.x),17(2.x)-
26.3.01.15 - 1.20,2.0 - 2.31.0+8(1.x),17(2.x)-

Установка​

Поддерживается установка как с помощью Jar-пакета, так и через зависимость Maven.

Установка с помощью Jar-пакета​

Скачайте Jar-пакет Flink Doris Connector нужной версии со страницы загрузок Doris и скопируйте его в classpath Flink:

  • Режим Standalone: Поместите Jar-файл в каталог lib/.
  • Кластерный режим Yarn: Поместите Jar-файл в пакет, подготавливаемый перед развертыванием.

Установка через зависимость Maven​

Добавьте следующую зависимость в pom.xml проекта:

<dependency>
<groupId>org.apache.doris</groupId>
<artifactId>flink-doris-connector-${flink.version}</artifactId>
<version>${connector.version}</version>
</dependency>

Например:

<dependency>
<groupId>org.apache.doris</groupId>
<artifactId>flink-doris-connector-1.16</artifactId>
<version>26.3.0</version>
</dependency>

Следующие шаги​