azureBlobStorage — табличная функция,
которая позволяет быстро и удобно выполнять приём данных из Azure Blob Storage в
ClickHouse. Однако её использование не всегда подходит по следующим причинам:
- Ваши данные могут храниться не в Azure Blob Storage — например, в Azure SQL Database, Microsoft SQL Server или Cosmos DB.
- Политики безопасности могут полностью запрещать внешний доступ к Blob Storage — например, если учетная запись хранения закрыта и не имеет публичной конечной точки.
Можно не открывать экземпляр ClickHouse для доступа из интернета,
если использовать Self-hosted Integration Runtime в Azure Data Factory. Такая конфигурация позволяет
передавать данные по частной сети. Однако это выходит за рамки данной
статьи. Дополнительную информацию см. в официальном руководстве:
Создание и настройка Self-hosted Integration Runtime
Превращение ClickHouse в REST-сервис
query вашей конечной точки ClickHouse:
Azure Data Factory может автоматически выполнять это кодирование с помощью встроенной
функции
encodeUriComponent, поэтому вам не придется делать это вручную.col_1, col_2 и col_3.
JSONEachRow в ClickHouse.
Как видите, на этом шаге вам не нужно делать ничего особенного со стороны ClickHouse.
HTTP-интерфейс уже предоставляет всё необходимое, чтобы работать как
REST-подобная конечная точка — никакая дополнительная настройка не требуется.
Теперь, когда ClickHouse работает как REST-конечная точка, пора
настроить Azure Data Factory для работы с ней.
На следующих шагах мы создадим экземпляр Azure Data Factory, настроим Linked
Service для вашего экземпляра ClickHouse, определим Dataset для
REST-приемника
и создадим активность Copy Data для отправки данных из Azure в ClickHouse.
Создание экземпляра Azure Data Factory
- Войдите в Microsoft Azure Portal и нажмите Create a resource.
- На панели Categories слева выберите Analytics, затем нажмите Data Factory в списке популярных сервисов.
- Выберите подписку и группу ресурсов, введите имя для нового экземпляра Data Factory, выберите регион и оставьте версию V2.
- Нажмите Review + Create, затем Create, чтобы запустить развертывание.
Создание новой связанной службы на основе REST
- Войдите в Azure Portal и откройте свой экземпляр Data Factory.
- На странице обзора Data Factory нажмите Launch Studio.
- В меню слева выберите Manage, затем перейдите в Linked services и нажмите + New, чтобы создать новую связанную службу.
- В строке поиска New linked service введите REST, выберите REST и нажмите Continue, чтобы создать экземпляр коннектора REST.
- На панели конфигурации связанной службы введите имя новой службы, нажмите поле Base URL, затем нажмите Add dynamic content (эта ссылка появляется только после выбора поля).
- На панели динамического содержимого можно создать параметризованный URL, который позволит позже задать запрос при создании датасетов для разных таблиц — так связанную службу можно использовать повторно.
-
Нажмите ”+” рядом с полем фильтра и добавьте новый параметр, назовите его
pQuery, установите тип String и задайте значение по умолчаниюSELECT 1. Нажмите Save. -
В поле выражения введите следующий текст и нажмите OK. Замените
your-clickhouse-url.comна фактический адрес вашего экземпляра ClickHouse. - Вернувшись в основную форму, выберите базовую аутентификацию, введите имя пользователя и пароль, которые используются для подключения к вашему HTTP-интерфейсу ClickHouse, затем нажмите Test connection. Если всё настроено правильно, вы увидите сообщение об успешном подключении.
- Нажмите Create, чтобы завершить настройку.
Создание нового набора данных для HTTP-интерфейса ClickHouse
-
Откройте консоль запросов ClickHouse по своему выбору — это может быть
веб-интерфейс ClickHouse Cloud, CLI-клиент или любой другой интерфейс, который вы используете
для выполнения запросов, — и создайте целевую таблицу:
- В Azure Data Factory Studio выберите Author на левой панели. Наведите указатель на элемент Dataset, нажмите значок с тремя точками и выберите New dataset.
- В строке поиска введите REST, выберите REST и нажмите Continue. Введите имя набора данных и выберите связанную службу, созданную на предыдущем шаге. Нажмите OK, чтобы создать набор данных.
-
Теперь в разделе Datasets
на панели Factory Resources слева должен отображаться только что созданный набор данных. Выберите его, чтобы
открыть свойства. Вы увидите параметр
pQuery, который был определён в связанной службе. Нажмите текстовое поле Value. Затем нажмите Add dynamic content. -
В открывшуюся панель вставьте следующий запрос:
Все одинарные кавычки
' в запросе необходимо заменить на две одинарные кавычки
''. Это требуется парсером выражений Azure Data Factory. Если
не экранировать их, ошибка может не появиться сразу — но позже всё завершится
сбоем, когда вы попытаетесь использовать или сохранить набор данных. Например, 'best_effort'
должно быть записано как ''best_effort''.- Нажмите OK, чтобы сохранить выражение. Нажмите Test connection. Если всё настроено правильно, появится сообщение Connection successful. Нажмите Publish all в верхней части страницы, чтобы сохранить изменения.
Настройка примера набора данных
Чтобы не перегружать это руководство деталями, мы не будем подробно
рассматривать точные шаги по созданию исходного набора данных в Azure Data Factory. Вы
можете загрузить пример данных в любой выбранный вами сервис хранения —
например, в Azure Blob Storage, Microsoft SQL
Server или даже в файл другого формата, поддерживаемого Azure Data Factory.
Создание действия Copy Data для передачи данных в ClickHouse
sensors в ClickHouse.
- Откройте Azure Data Factory Studio и перейдите на вкладку Author. В панели Factory Resources наведите указатель на Pipeline, нажмите значок с тремя точками и выберите New pipeline.
- В панели Activities разверните раздел Move and transform и перетащите действие Copy data на холст.
- Выберите вкладку Source и укажите исходный набор данных, который вы создали ранее.
- Перейдите на вкладку Sink и выберите набор данных ClickHouse, созданный для таблицы sensors. Установите для Request method значение POST. Убедитесь, что для HTTP compression type установлено значение None.
Мы рекомендуем оставить размер батча по умолчанию — 10 000, или даже увеличить
его. Подробнее см. в разделе
Выбор стратегии вставки / Батч-вставки при синхронном режиме.
- Нажмите Debug в верхней части холста, чтобы запустить конвейер. После короткого ожидания действие будет поставлено в очередь и выполнено. Если всё настроено правильно, задача должна завершиться со статусом Success.
- После завершения нажмите Publish all, чтобы сохранить изменения в конвейере и наборах данных.