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

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

Этот гид совместим с ClickHouse Cloud и для саморазмещаемого ClickHouse v23.5+.

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

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

Сколько времени займет экспорт данных в ClickHouse?

Экспорт данных из BigQuery в ClickHouse зависит от размера вашего набора данных. В качестве сравнения, экспорт публичного набора данных Ethereum размером 4TB из 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 позволяет экспортировать до 50TB в день в 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.