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

Загрузка данных из BigQuery в ClickHouse

Этот путеводитель совместим с ClickHouse Cloud и с самоуправляемым ClickHouse v23.5+.

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

Сначала мы экспортируем таблицу в объектное хранилище Google (GCS), а затем импортируем эти данные в ClickHouse Cloud. Эти шаги необходимо повторить для каждой таблицы, которую вы хотите экспортировать из BigQuery в ClickHouse.

Как долго будет занимать экспорт данных в ClickHouse?

Экспорт данных из BigQuery в ClickHouse зависит от размера вашего набора данных. Для сравнения, экспорт публичного набора данных Ethereum размером 4 ТБ из BigQuery в ClickHouse с использованием этого путеводителя занимает примерно час.

ТаблицаСтрокиЭкспортированные файлыРазмер данныхЭкспорт из BigQueryВремя СлотаИмпорт в ClickHouse
blocks16,569,4897314.53ГБ23 сек37 мин15.4 сек
transactions1,864,514,4145169957ГБ1 мин 38 сек1 день 8ч18 мин 5 сек
traces6,325,819,30617,9852.896ТБ5 мин 46 сек5 дней 19 ч34 мин 55 сек
contracts57,225,83735045.35ГБ16 сек1 ч 51 мин39.4 сек
Итого8.26 миллиардов23,5773.982ТБ8 мин 3 сек> 6 дней 5 ч53 мин 45 сек

1. Экспорт данных таблицы в GCS

На этом этапе мы используем рабочую область SQL BigQuery для выполнения наших SQL-команд. Ниже мы экспортируем таблицу BigQuery под названием mytable в ведро GCS с помощью оператора EXPORT DATA.

В приведенном выше запросе мы экспортируем нашу таблицу BigQuery в формат данных Parquet. У нас также есть символ * в нашем параметре uri. Это обеспечивает разбивку вывода на несколько файлов с нумерованным суффиксом, если экспорт превышает 1 ГБ данных.

У этого подхода есть несколько преимуществ:

  • Google позволяет экспортировать до 50 ТБ в день в GCS бесплатно. Пользователи платят только за хранилище GCS.
  • Экспорт автоматически создает несколько файлов, ограничивая каждый максимумом в 1 ГБ данных таблицы. Это полезно для ClickHouse, поскольку позволяет параллелизовать импорты.
  • Parquet, как столбцовый формат, представляет собой лучший формат для обмена, так как он по своей природе сжат и быстрее для экспорта из BigQuery и запроса в ClickHouse.

2. Импорт данных в ClickHouse из GCS

После завершения экспорта мы можем импортировать эти данные в таблицу ClickHouse. Вы можете использовать SQL-консоль ClickHouse или clickhouse-client, чтобы выполнить команды ниже.

Сначала вам нужно создать вашу таблицу в ClickHouse:

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

Наконец, мы можем вставить данные из GCS в нашу таблицу ClickHouse, используя оператор INSERT INTO SELECT, который вставляет данные в таблицу на основе результатов запроса SELECT.

Чтобы получить данные для INSERT, мы можем использовать функцию s3Cluster для получения данных из нашего ведра GCS, так как GCS совместим с Amazon S3. Если у вас только один узел ClickHouse, вы можете использовать функцию s3 вместо функции s3Cluster.

ACCESS_ID и SECRET, используемые в приведенном выше запросе, — это ваш HMAC-ключ, связанный с вашим ведром GCS.

примечание
Используйте ifNull при экспорте столбцов, допускающих NULL

В приведенном выше запросе мы используем функцию ifNull со столбцом some_text, чтобы вставить данные в нашу таблицу ClickHouse с значением по умолчанию. Вы также можете сделать ваши столбцы в ClickHouse Nullable, но это не рекомендуется, так как может негативно повлиять на производительность.

В качестве альтернативы вы можете использовать SET input_format_null_as_default=1, и любые отсутствующие или NULL значения будут заменены значениями по умолчанию для их соответствующих столбцов, если эти значения по умолчанию указаны.

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

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

Чтобы экспортировать больше таблиц BigQuery, просто повторите шаги выше для каждой дополнительной таблицы.

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

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

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