Загрузка данных из BigQuery в ClickHouse
Этот гид совместим с ClickHouse Cloud и для self-managed ClickHouse v23.5+.
В этом руководстве показано, как мигрировать данные из BigQuery в ClickHouse.
Сначала мы экспортируем таблицу в объектное хранилище Google (GCS), а затем импортируем эти данные в ClickHouse Cloud. Эти шаги нужно повторить для каждой таблицы, которую вы хотите экспортировать из BigQuery в ClickHouse.
Сколько времени займет экспорт данных в ClickHouse?
Экспорт данных из BigQuery в ClickHouse зависит от размера вашего набора данных. Для сравнения, экспорт публичного набора данных Ethereum размером 4 ТБ из 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 позволяет экспортировать до 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].