Загрузка данных из BigQuery в ClickHouse
Этот гид совместим с ClickHouse Cloud и для саморазмещаемого ClickHouse v23.5+.
Этот гид показывает, как мигрировать данные из BigQuery в ClickHouse.
Сначала мы экспортируем таблицу в объектное хранилище Google (GCS), а затем импортируем эти данные в ClickHouse Cloud. Эти шаги необходимо повторить для каждой таблицы, которую вы хотите экспортировать из BigQuery в ClickHouse.
Сколько времени займет экспорт данных в ClickHouse?
Экспорт данных из BigQuery в ClickHouse зависит от размера вашего набора данных. В качестве сравнения, экспорт публичного набора данных Ethereum размером 4TB из BigQuery в ClickHouse с использованием этого руководства занимает около часа.
Таблица | Строки | Экспортировано файлов | Размер данных | Экспорт из BigQuery | Время обработки | Импорт в ClickHouse |
---|---|---|---|---|---|---|
blocks | 16,569,489 | 73 | 14.53GB | 23 сек | 37 мин | 15.4 сек |
transactions | 1,864,514,414 | 5169 | 957GB | 1 мин 38 сек | 1 дн 8ч | 18 мин 5 сек |
traces | 6,325,819,306 | 17,985 | 2.896TB | 5 мин 46 сек | 5 дн 19 ч | 34 мин 55 сек |
contracts | 57,225,837 | 350 | 45.35GB | 16 сек | 1 ч 51 мин | 39.4 сек |
Всего | 8.26 миллиардов | 23,577 | 3.982TB | 8 мин 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.