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

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

ClickPipes для объектного хранилища обеспечивают простой и надежный способ приема данных из Amazon S3, Google Cloud Storage и DigitalOcean Spaces в 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 создаст отдельного пользователя для записи данных в целевую таблицу. Вы можете выбрать роль для этого внутреннего пользователя, используя пользовательскую роль или одну из предопределенных ролей:

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

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

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

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

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

НазваниеЛоготипТипСтатусОписание
Amazon S3Объектное хранилищеСтабильноНастройте ClickPipes для приема больших объемов данных из объектного хранилища.
Google Cloud StorageОбъектное хранилищеСтабильноНастройте ClickPipes для приема больших объемов данных из объектного хранилища.
DigitalOcean SpacesОбъектное хранилищеСтабильноНастройте 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 и DigitalOcean Spaces. Когда эта функция включена, 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 роль, как указано в этом руководстве. Скопируйте новый IAM ARN после создания и вставьте его в конфигурацию ClickPipe как "IAM ARN роль".

GCS

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

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

DigitalOcean Spaces

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

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

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

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

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

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