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

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

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