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

Загрузка данных из 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.53GB23 сек37 мин15.4 сек
transactions1,864,514,4145169957GB1 мин 38 сек1 день 8ч18 мин 5 сек
traces6,325,819,30617,9852.896TB5 мин 46 сек5 дней 19 ч34 мин 55 сек
contracts57,225,83735045.35GB16 сек1 ч 51 мин39.4 сек
Итого8.26 миллиардов23,5773.982TB8 мин 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 при экспорте ничтожных колонок

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

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

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

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

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

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

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

Если у вас возникли проблемы с переносом данных из BigQuery в ClickHouse, вы можете связаться с нами по адресу [email protected].