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

Миграция из Snowflake в ClickHouse

Этот гид показывает, как мигрировать данные из Snowflake в ClickHouse.

Миграция данных между Snowflake и ClickHouse требует использования объектного хранилища, такого как S3, в качестве промежуточного хранилища для передачи. Процесс миграции также основывается на использовании команд COPY INTO из Snowflake и INSERT INTO SELECT в ClickHouse.

1. Экспорт данных из Snowflake

Экспорт данных из Snowflake требует использования внешней стадии, как показано на диаграмме выше.

Допустим, мы хотим экспортировать таблицу Snowflake со следующей схемой:

Чтобы переместить данные этой таблицы в базу данных ClickHouse, сначала нужно скопировать эти данные на внешнюю стадию. При копировании данных мы рекомендуем использовать Parquet в качестве промежуточного формата, так как он позволяет делиться информацией о типах, сохраняет точность, хорошо сжимается и нативно поддерживает вложенные структуры, распространенные в аналитике.

В приведенном ниже примере мы создаем именованный формат файлов в Snowflake, чтобы представить Parquet и желаемые параметры файлов. Затем мы указываем, какой бакет будет содержать наш скопированный набор данных. Наконец, мы копируем набор данных в бакет.

Для набора данных около 5TB с максимальным размером файла 150MB и с использованием 2X-Large Snowflake warehouse, расположенного в том же AWS us-east-1 регионе, копирование данных в бакет S3 займет около 30 минут.

2. Импорт в ClickHouse

Когда данные загружены в промежуточное объектное хранилище, функции ClickHouse, такие как s3 table function, можно использовать для вставки данных в таблицу, как показано ниже.

Этот пример использует s3 table function для AWS S3, но gcs table function можно использовать для Google Cloud Storage, а azureBlobStorage table function можно использовать для Azure Blob Storage.

Предположим, что у нас есть следующая схема целевой таблицы:

Мы можем затем использовать команду INSERT INTO SELECT, чтобы вставить данные из S3 в таблицу ClickHouse:

Примечание о вложенных структурах колонок

Колонки VARIANT и OBJECT в исходной схеме таблицы Snowflake будут по умолчанию выводиться как JSON строки, что заставляет нас приводить их к типу при вставке в ClickHouse.

Вложенные структуры, такие как some_file, конвертируются в JSON строки при копировании Snowflake. Импорт этих данных требует от нас преобразования этих структур в Tuples во время вставки в ClickHouse, используя функцию JSONExtract, как показано выше.

3. Тестирование успешного экспорта данных

Чтобы проверить, были ли ваши данные корректно вставлены, достаточно выполнить запрос SELECT к вашей новой таблице:

Дальнейшее чтение и поддержка

В дополнение к этому руководству, мы также рекомендуем прочитать нашу статью в блоге сравнивающую Snowflake и ClickHouse.

Если у вас есть проблемы с передачей данных из Snowflake в ClickHouse, пожалуйста, свяжитесь с нами по адресу support@clickhouse.com.