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

Миграция в Doris из других OLAP-систем

Таблицы ClickHouse, Greenplum и lakehouse можно скопировать в Doris с помощью соответствующих Catalog. Прежде чем выбирать целевую модель, определите семантику снимков, обновлений и агрегации; в Doris нет полных аналогов движков хранения исходных систем, которые автоматически воспроизводили бы их поведение.

Способы миграции и предварительные требования​

ИсточникСправочная документация по подключению и параметрамПроверки перед миграцией
ClickHouseClickHouse JDBC CatalogДрайверы, беззнаковые целые числа, сопоставления типов даты и времени и сложных типов
GreenplumPostgreSQL JDBC CatalogСовместимый драйвер, фактические метаданные и согласованность распределённого экспорта
HiveHive CatalogMetastore, файловое хранилище, аутентификация и партиции
IcebergIceberg CatalogСервис метаданных, права доступа к хранилищу и согласованный снимок
HudiHudi CatalogТип таблицы, доступное для чтения представление, лежащие в основе файлы и ограничения запросов

Каждый FE/BE должен иметь доступ к необходимым сервисам, драйверам и хранилищам. Настройте Catalog по соответствующей справочной документации и используйте учётную запись Doris с правами на чтение внешней таблицы, а также на создание целевой таблицы и загрузку в неё данных.

ClickHouse​

Используйте JDBC Catalog и явно указывайте столбцы в INSERT INTO ... SELECT. Сначала выполните DESC; рекомендуемые варианты структуры целевой таблицы не отражают фактические сопоставления типов JDBC. Например, Catalog не гарантирует прямого сопоставления с CHAR для типа ClickHouse FixedString; проверьте поддержку Map/Tuple и других сложных типов для используемого драйвера и версии Doris.

Для ReplacingMergeTree, CollapsingMergeTree и таблиц с состояниями агрегатных функций определите итоговый набор видимых строк, столбцы версий, маркеры удаления и правила слияния. Таблица Doris с моделью Unique Key не воспроизводит автоматически всю семантику движка исходной системы. Проверьте различия в SQL, связанные с NULL, совпадающими экстремальными значениями, разворачиванием массивов и извлечением строк из JSON.

Greenplum​

Следуйте порядку пакетной миграции, описанному в разделе Миграция из PostgreSQL, проверяя фактические сопоставления типов Greenplum. Параллельные операции экспорта и пакеты SQL должны работать с одним и тем же согласованным представлением исходных данных; сама по себе параллельность не обеспечивает общий снимок для нескольких таблиц.

Озеро данных​

Используйте соответствующие Catalog для Hive, Iceberg и Hudi. На время миграции зафиксируйте нужный снимок Iceberg. Для Hudi определите, какое представление читается и какие типы таблиц поддерживает развёрнутая версия. Создание Catalog лишь открывает доступ к внешним данным; копия данных в Doris при этом не создаётся.

Основы использования​

Предположим, что source_catalog настроен, как описано выше, а таблица analytics.migration_demo содержит столбцы id BIGINT и value DECIMAL(12,2) и используется фиксированный снимок источника. Проверьте эти типы с помощью DESC, затем выполните в Doris:

CREATE DATABASE IF NOT EXISTS migration_target;
CREATE TABLE migration_target.olap_demo (
id BIGINT,
`value` DECIMAL(12,2)
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES ('replication_num' = '1');

INSERT INTO migration_target.olap_demo (id, `value`)
SELECT id, `value` FROM source_catalog.analytics.migration_demo;

SELECT COUNT(*), SUM(`value`) FROM source_catalog.analytics.migration_demo;
SELECT COUNT(*), SUM(`value`) FROM migration_target.olap_demo;

Ожидаемый результат: в пустую целевую таблицу загружаются оба выбранных столбца из снимка источника, а два проверочных запроса возвращают одинаковое количество строк и одинаковые суммы. Одна реплика и один бакет приведены для примера; выбирайте параметры производственных таблиц с учётом ресурсов и требований к надёжности. Полный пример с фиксированными входными данными приведён в разделах MySQL и PostgreSQL.

Другие способы загрузки​

Если прямое подключение недоступно, экспортируйте данные в файлы поддерживаемых форматов и используйте S3 Load или Broker Load. Прежде чем увеличивать объём импорта, определите форматы файлов, кодировку, представление NULL, точность и часовые пояса.

Также можно использовать Spark Connector или Flink Connector. Сведения о возможностях пакетной и потоковой обработки, совместимых версиях и семантике приведены в справочной документации каждого коннектора.

Ошибки и рекомендации​

Проверяйте выборки ограниченного размера, прежде чем увеличивать размер пакетов или степень параллелизма. Явно преобразуйте неподдерживаемые типы и проверяйте потери точности, не пропуская столбцы. Повторное выполнение INSERT в целевую таблицу с моделью Duplicate Key добавляет дублирующиеся строки; перед возобновлением загрузки определите, какие диапазоны уже обработаны. Перед переключением на новую систему выполните проверки согласованности между системами из раздела Обзор миграции, а также сохраните исходные данные и возможность отката.