Миграция из других OLAP-систем в Doris
Таблицы 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 добавляет дублирующиеся строки; перед возобновлением загрузки определите уже обработанные диапазоны. До переключения выполните межсистемные проверки из раздела Обзор миграции и сохраните исходные данные и возможность отката.