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

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

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

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

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

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

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

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

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

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

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

2. Импорт в ClickHouse

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

В этом примере используется функция таблицы s3 для AWS S3, но функция таблицы gcs может быть использована для Google Cloud Storage, а функция таблицы azureBlobStorage может быть использована для 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, пожалуйста, свяжитесь с нами по адресу [email protected].