azureBlobStorage
é uma forma rápida e conveniente de fazer a ingestão de dados do Azure Blob Storage para o
ClickHouse. No entanto, nem sempre ela é a opção mais adequada pelos seguintes motivos:
- Seus dados podem não estar armazenados no Azure Blob Storage — por exemplo, podem estar no Azure SQL Database, Microsoft SQL Server ou Cosmos DB.
- As políticas de segurança podem impedir completamente o acesso externo ao Blob Storage — por exemplo, se a conta de armazenamento estiver bloqueada e sem endpoint público.
É possível evitar expor sua instância do ClickHouse à internet usando o
runtime de integração auto-hospedado do Azure Data Factory. Essa configuração permite
que os dados sejam enviados por uma rede privada. No entanto, isso foge ao escopo deste
artigo. Você pode encontrar mais informações no guia oficial:
Criar e configurar um runtime de integração auto-hospedado
Runtime
Transformando o ClickHouse em um serviço REST
O Azure Data Factory pode lidar com essa codificação automaticamente usando a
função integrada
encodeUriComponent, então você não precisa fazer isso manualmente.col_1, col_2 e col_3.
JSONEachRow do ClickHouse.
Como você pode ver, nesta etapa não é necessário fazer nada de especial no lado do ClickHouse.
A interface HTTP já oferece tudo o que é necessário para atuar como um
endpoint no estilo REST — nenhuma configuração adicional é necessária.
Agora que fizemos o ClickHouse se comportar como um endpoint REST, é hora de
configurar o Azure Data Factory para usá-lo.
Nas próximas etapas, vamos criar uma instância do Azure Data Factory, configurar um Linked
Service para a sua instância do ClickHouse, definir um Dataset para o
sink REST
e criar uma atividade Copy Data para enviar dados do Azure para o ClickHouse.
Criando uma instância do Azure Data Factory
- Faça login no Microsoft Azure Portal e clique em Criar um recurso.
- No painel Categorias à esquerda, selecione Analytics e, em seguida, clique em Data Factory na lista de serviços populares.
- Selecione sua assinatura e seu grupo de recursos, insira um nome para a nova instância do Data Factory, escolha a região e mantenha a versão como V2.
- Clique em Revisar + criar e, depois, em Criar para iniciar a implantação.
Criando um novo linked service baseado em REST
- Faça login no Microsoft Azure Portal e abra sua instância do Data Factory.
- Na página de visão geral do Data Factory, clique em Launch Studio.
- No menu à esquerda, selecione Manage, depois vá para Linked services e clique em + New para criar um novo linked service.
- Na barra de pesquisa New linked service, digite REST, selecione REST e clique em Continue para criar uma instância de conector REST.
- No painel de configuração do linked service, insira um nome para o novo linked service, clique no campo Base URL e, em seguida, em Add dynamic content (esse link só aparece quando o campo está selecionado).
- No painel de conteúdo dinâmico, você pode criar uma URL parametrizada, o que permite definir a consulta mais tarde ao criar datasets para diferentes tabelas — isso torna o linked service reutilizável.
-
Clique no ”+” ao lado do campo de filtro e adicione um novo parâmetro, nomeando-o
como
pQuery, defina o tipo como String e o valor padrão comoSELECT 1. Clique em Save. -
No campo de expressão, insira o texto a seguir e clique em OK. Substitua
your-clickhouse-url.compelo endereço real da sua instância do ClickHouse. - De volta ao formulário principal, selecione Basic authentication, insira o nome de usuário e a senha usados para se conectar à sua interface HTTP do ClickHouse e clique em Test connection. Se tudo estiver configurado corretamente, você verá uma mensagem de sucesso.
- Clique em Create para finalizar a configuração.
Criando um novo conjunto de dados para a interface HTTP do ClickHouse
-
Abra o console de consultas do ClickHouse de sua preferência — pode ser a
interface web do ClickHouse Cloud, o cliente de linha de comando ou qualquer outra interface que você use para
executar consultas — e crie a tabela de destino:
- No Azure Data Factory Studio, selecione Author no painel à esquerda. Passe o cursor sobre o item Dataset, clique no ícone de três pontos e escolha New dataset.
- Na barra de pesquisa, digite REST, selecione REST e clique em Continue. Digite um nome para o conjunto de dados e selecione o linked service que você criou na etapa anterior. Clique em OK para criar o conjunto de dados.
-
Agora você deverá ver o conjunto de dados recém-criado listado na seção Datasets
no painel Factory Resources à esquerda. Selecione o conjunto de dados para
abrir as propriedades dele. Você verá o parâmetro
pQueryque foi definido no linked service. Clique no campo de texto Value. Em seguida, clique em Add dynamic content. -
No painel que se abrir, cole a seguinte consulta:
Todas as aspas simples
' na consulta devem ser substituídas por duas aspas simples
''. Isso é exigido pelo parser de expressões do Azure Data Factory. Se você
não fizer o escape delas, talvez não veja um erro imediatamente — mas isso falhará
mais tarde, quando você tentar usar ou salvar o conjunto de dados. Por exemplo, 'best_effort'
deve ser escrito como ''best_effort''.- Clique em OK para salvar a expressão. Clique em Test connection. Se tudo estiver configurado corretamente, você verá a mensagem Connection successful. Clique em Publish all no topo da página para salvar suas alterações.
Configurando um conjunto de dados de exemplo
Para manter este guia focado, não vamos detalhar as etapas exatas para criar o
conjunto de dados de origem no Azure Data Factory. Você pode enviar os dados de exemplo para qualquer
serviço de armazenamento de sua preferência — por exemplo, Azure Blob Storage, Microsoft SQL
Server ou até mesmo outro formato de arquivo compatível com o Azure Data Factory.
Criando uma atividade de cópia para transferir dados para o ClickHouse
sensors no ClickHouse.
- Abra o Azure Data Factory Studio e vá para a guia Author. No painel Factory Resources, passe o cursor sobre Pipeline, clique no ícone de três pontos e selecione New pipeline.
- No painel Activities, expanda a seção Move and transform e arraste a atividade Copy data para a tela.
- Selecione a guia Source e escolha o dataset de origem que você criou anteriormente.
-
Vá para a guia Sink e selecione o dataset do ClickHouse criado para a
tabela
sensors. Defina Request method como POST. Certifique-se de que HTTP compression type esteja definido como None.
Recomendamos manter o tamanho de Batch padrão de 10.000, ou até aumentá-lo
ainda mais. Para mais detalhes, consulte
Selecionando uma estratégia de insert / Batch inserts se síncrono.
- Clique em Debug na parte superior da tela para executar o pipeline. Após uma breve espera, a atividade entrará na fila e será executada. Se tudo estiver configurado corretamente, a tarefa deverá terminar com status Success.
- Quando concluir, clique em Publish all para salvar as alterações no pipeline e no dataset.