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

Интеграция объектного хранилища с ClickHouse Cloud

ClickPipes для объектного хранилища предоставляют простой и надежный способ приема данных из Amazon S3 и Google Cloud Storage в ClickHouse Cloud. Поддерживаются как одноразовая, так и непрерывная подача данных с семантикой exactly-once.

Предварительные требования

Вы ознакомились с введением в ClickPipes.

Создание вашего первого ClickPipe

  1. В облачной консоли выберите кнопку Data Sources в левом меню и нажмите "Настроить ClickPipe".
  1. Выберите источник данных.
  1. Заполните форму, указав вашему ClickPipe имя, описание (по желанию), вашу IAM роль или учетные данные, а также URL корзины. Вы можете указать несколько файлов, используя шаблоны, похожие на bash. Для получения дополнительной информации, см. документацию по использованию шаблонов в пути.
  1. Интерфейс отобразит список файлов в указанной корзине. Выберите ваш формат данных (в данный момент мы поддерживаем подмножество форматов ClickHouse) и укажите, хотите ли вы включить непрерывную подачу данных Дополнительные детали ниже.
  1. На следующем шаге вы можете выбрать, хотите ли вы загружать данные в новую таблицу ClickHouse или повторно использовать существующую. Следуйте инструкциям на экране, чтобы изменить имя таблицы, схему и настройки. Вы можете увидеть предпросмотр ваших изменений в примерной таблице в верхней части.

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

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

Вы также можете сопоставить виртуальные колонки, такие как _path или _size, с полями.

  1. Наконец, вы можете настроить разрешения для внутреннего пользователя ClickPipes.

Разрешения: ClickPipes создаст специального пользователя для записи данных в целевую таблицу. Вы можете выбрать роль для этого внутреннего пользователя, используя пользовательскую роль или одну из предопределенных ролей:

  • Полный доступ: полный доступ к кластеру. Требуется, если вы используете материализованное представление или словарь с целевой таблицей.
  • Только целевая таблица: разрешения INSERT только для целевой таблицы.
  1. Нажав "Завершить настройку", система зарегистрирует ваш ClickPipe, и вы сможете увидеть его в таблице сводки.

Таблица сводки предоставляет элементы управления для отображения образцов данных из источника или целевой таблицы в ClickHouse.

А также элементы управления для удаления ClickPipe и отображения сводки задания на подачу данных.

  1. Поздравляем! Вы успешно настроили свой первый ClickPipe. Если это потоковый ClickPipe, он будет непрерывно работать, принимая данные в реальном времени из вашего удаленного источника данных. В противном случае он загрузит пакет и завершит работу.

Поддерживаемые источники данных

НазваниеЛоготипТипСтатусОписание
Amazon S3Объектное хранилищеСтабильныйНастройте ClickPipes для загрузки больших объемов данных из объектного хранения.
Google Cloud StorageОбъектное хранилищеСтабильныйНастройте ClickPipes для загрузки больших объемов данных из объектного хранения.

Больше коннекторов будет добавлено в ClickPipes, вы можете узнать больше, связавшись с нами.

Поддерживаемые форматы данных

Поддерживаемые форматы:

Семантика Exactly-Once

При загрузке больших наборов данных могут возникнуть различные типы сбоев, что может привести к частичным вставкам или дублирующим данным. ClickPipes для объектного хранилища устойчивы к сбоям вставки и обеспечивают семантику exactly-once. Это достигается с помощью временных "стадий" таблиц. Сначала данные вставляются в стадии таблиц. Если что-то пойдет не так с этой вставкой, стадия таблицы может быть обрезана, и вставка может быть повторена с чистого состояния. Только когда вставка завершена и успешна, разделы в стадии таблицы перемещаются в целевую таблицу. Чтобы подробнее узнать об этой стратегии, ознакомьтесь с этой статьей в блоге.

Поддержка представлений

На целевой таблице также поддерживаются материализованные представления. ClickPipes создаст стадийные таблицы не только для целевой таблицы, но и для любых зависимых материализованных представлений.

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

Масштабирование

ClickPipes для объектного хранилища масштабируются в зависимости от минимального размера службы ClickHouse, определяемого настроенными параметрами вертикального автоскейлинга. Размер ClickPipe определяется в момент его создания. Последующие изменения в настройках службы ClickHouse не повлияют на размер ClickPipe.

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

Ограничения

  • Любые изменения в целевой таблице, её материализованных представлениях (включая каскадные материализованные представления) или целевых таблицах материализованного представления не будут автоматически подхвачены трубопроводом и могут привести к ошибкам. Вам необходимо остановить трубопровод, внести необходимые изменения, а затем перезапустить трубопровод, чтобы изменения были учтены и избежать ошибок и дублирующихся данных из-за повторений.
  • Существуют ограничения на типы поддерживаемых представлений. Пожалуйста, прочтите раздел о семантике exactly-once и поддержке представлений для получения дополнительной информации.
  • Аутентификация по ролям недоступна для ClickPipes S3 для экземпляров ClickHouse Cloud, развернутых в GCP или Azure. Она поддерживается только для экземпляров ClickHouse Cloud на AWS.
  • ClickPipes будет пытаться принимать объекты размером 10 ГБ или меньше. Если файл превышает 10 ГБ, ошибка будет добавлена в выделенную таблицу ошибок ClickPipes.
  • ClickPipes S3 / GCS не имеют синтаксиса списка, совместимого с табличной функцией S3.
    • ? — заменяет любой одиночный символ
    • * — заменяет любое количество любых символов, включая пустую строку
    • ** — заменяет любое количество любых символов, включая пустую строку
примечание

Это действительный путь:

https://datasets-documentation.s3.eu-west-3.amazonaws.com/http/**.ndjson.gz

Это недействительный путь. {N..M} не поддерживаются в ClickPipes.

https://datasets-documentation.s3.eu-west-3.amazonaws.com/http/{documents-01,documents-02}.ndjson.gz

Непрерывная подача данных

ClickPipes поддерживают непрерывную загрузку как из S3, так и из GCS. При включении ClickPipes будет непрерывно загружать данные из указанного пути, опрашивая новые файлы с частотой раз в 30 секунд. Однако новые файлы должны быть лексикографически больше последнего загруженного файла, то есть они должны быть названы таким образом, чтобы определить порядок загрузки. Например, файлы с названиями file1, file2, file3 и т.д. будут загружаться последовательно. Если новый файл добавляется с названием, например, file0, ClickPipes не загрузит его, поскольку он не лексикографически больше последнего загруженного файла.

Архивная таблица

ClickPipes создаст таблицу рядом с вашей целевой таблицей с постфиксом s3_clickpipe_<clickpipe_id>_archive. Эта таблица будет содержать список всех файлов, которые были загружены ClickPipe. Эта таблица используется для отслеживания файлов во время загрузки и может быть использована для проверки, что файлы были загружены. Архивная таблица имеет TTL на 7 дней.

примечание

Эти таблицы не будут видны при использовании SQL-консоли ClickHouse Cloud, вам нужно будет подключиться через внешний клиент, используя HTTPS или родное соединение, чтобы прочитать их.

Аутентификация

S3

Вы можете получить доступ к публичным корзинам без настройки, а для защищенных корзин вы можете использовать учетные данные IAM или IAM роль. Чтобы использовать IAM роль, вам нужно создать IAM роль, как указано в этом руководстве. Скопируйте новый ARN IAM роли после создания и вставьте его в конфигурацию ClickPipe в качестве "IAM ARN роли".

GCS

Как и в S3, вы можете получать доступ к публичным корзинам без настройки, а для защищенных корзин вы можете использовать HMAC ключи вместо учетных данных AWS IAM. Вы можете прочитать это руководство от Google Cloud о том, как настроить такие ключи.

Служебные аккаунты для GCS не поддерживаются напрямую. Учетные данные HMAC (IAM) должны использоваться при аутентификации с непубличными корзинами. Права доступа служебного аккаунта, прикрепленные к учетным данным HMAC, должны включать storage.objects.list и storage.objects.get.

Вопросы и ответы

  • Поддерживает ли ClickPipes корзины GCS с префиксом gs://?

Нет. По причинам взаимодействия мы просим вас заменить ваш префикс gs:// на https://storage.googleapis.com/.

  • Какие разрешения требуются для публичной корзины GCS?

allUsers требует соответствующего назначения ролей. Роль roles/storage.objectViewer должна быть предоставлена на уровне корзины. Эта роль предоставляет разрешение storage.objects.list, которое позволяет ClickPipes перечислять все объекты в корзине, что требуется для запуска и загрузки данных. Эта роль также включает разрешение storage.objects.get, которое необходимо для чтения или загрузки отдельных объектов в корзине. См.: Контроль доступа Google Cloud для дальнейшей информации.