Миграция в Doris из других OLAP-систем
Таблицы ClickHouse, Greenplum и lakehouse можно скопировать в Doris с помощью соответствующих Catalog. Прежде чем выбирать целевую модель, определите семантику снимков, обновлений и агрегации; в Doris нет полных аналогов движков хранения исходных систем, которые автоматически воспроизводили бы их поведение.
Способы миграции и предварительные требования
| Источник | Справочная документация по подключению и параметрам | Проверки перед миграцией |
|---|---|---|
| ClickHouse | ClickHouse JDBC Catalog | Драйверы, беззнаковые целые числа, сопоставления типов даты и времени и сложных типов |
| Greenplum | PostgreSQL JDBC Catalog | Совместимый драйвер, фактические метаданные и согласованность распределённого экспорта |
| Hive | Hive Catalog | Metastore, файловое хранилище, аутентификация и партиции |
| Iceberg | Iceberg Catalog | Сервис метаданных, права доступа к хранилищу и согласованный снимок |
| Hudi | Hudi 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 добавляет дублирующиеся строки; перед возобновлением загрузки определите, какие диапазоны уже обработаны. Перед переключением на новую систему выполните проверки согласованности между системами из раздела Обзор миграции, а также сохраните исходные данные и возможность отката.