azureBlobStorage
es una forma rápida y práctica de ingestar datos desde Azure Blob Storage en
ClickHouse. Sin embargo, no siempre es la opción adecuada por las siguientes razones:
- Es posible que sus datos no estén almacenados en Azure Blob Storage; por ejemplo, podrían estar en Azure SQL Database, Microsoft SQL Server o Cosmos DB.
- Las políticas de seguridad pueden impedir por completo el acceso externo a Blob Storage; por ejemplo, si la cuenta de almacenamiento está restringida y no tiene ningún endpoint público.
Es posible evitar exponer su instancia de ClickHouse a internet mediante el
Self-hosted Integration Runtime de Azure Data Factory. Esta configuración permite
enviar datos a través de una red privada. Sin embargo, esto queda fuera del alcance de este
artículo. Puede encontrar más información en la guía oficial:
Crear y configurar un entorno de ejecución de integración
autohospedado
Convertir ClickHouse en un servicio REST
Azure Data Factory puede gestionar esta codificación automáticamente con su función integrada
encodeUriComponent, por lo que no tienes que hacerlo manualmente.col_1, col_2 y col_3.
JSONEachRow de ClickHouse.
Como puedes ver, en este paso no necesitas hacer nada especial del lado de ClickHouse.
La interfaz HTTP ya ofrece todo lo necesario para actuar como un
endpoint de tipo REST; no hace falta ninguna configuración adicional.
Ahora que hemos hecho que ClickHouse se comporte como un endpoint REST, es hora de
configurar Azure Data Factory para usarlo.
En los siguientes pasos, crearemos una instancia de Azure Data Factory, configuraremos un Linked
Service para tu instancia de ClickHouse, definiremos un Dataset para el
REST sink
y crearemos una actividad Copy Data para enviar datos desde Azure a ClickHouse.
Crear una instancia de Azure Data Factory
- Inicia sesión en el Microsoft Azure Portal y haz clic en Create a resource.
- En el panel de categorías de la izquierda, selecciona Analytics y luego haz clic en Data Factory en la lista de servicios populares.
- Selecciona tu suscripción y grupo de recursos, introduce un nombre para la nueva instancia de Data Factory, elige la región y deja la versión en V2.
- Haz clic en Review + Create y luego en Create para iniciar la implementación.
Creación de un nuevo servicio vinculado basado en REST
- Inicie sesión en Azure Portal de Microsoft y abra su instancia de Data Factory.
- En la página de información general de Data Factory, haga clic en Launch Studio.
- En el menú de la izquierda, seleccione Manage, luego vaya a Linked services y haga clic en + New para crear un nuevo servicio vinculado.
- En la barra de búsqueda de New linked service, escriba REST, seleccione REST y haga clic en Continue para crear una instancia de un conector REST.
- En el panel de configuración del servicio vinculado, introduzca un nombre para el nuevo servicio, haga clic en el campo Base URL y, a continuación, en Add dynamic content (este enlace solo aparece cuando el campo está seleccionado).
- En el panel de contenido dinámico puede crear una URL parametrizada, lo que le permite definir la consulta más adelante al crear datasets para distintas tablas; así, el servicio vinculado se puede reutilizar.
-
Haga clic en el ”+” junto al campo de filtro y agregue un nuevo parámetro; asígnele el nombre
pQuery, establezca el tipo en String y el valor predeterminado enSELECT 1. Haga clic en Save. -
En el campo de expresión, introduzca lo siguiente y haga clic en OK. Sustituya
your-clickhouse-url.compor la dirección real de su instancia de ClickHouse. - De vuelta en el formulario principal, seleccione autenticación básica, introduzca el nombre de usuario y la contraseña que utiliza para conectarse a su interfaz HTTP de ClickHouse y haga clic en Test connection. Si todo está configurado correctamente, verá un mensaje de éxito.
- Haga clic en Create para finalizar la configuración.
Creación de un nuevo conjunto de datos para la interfaz HTTP de ClickHouse
-
Abra la consola de consultas de ClickHouse que prefiera; puede ser la
interfaz web de ClickHouse Cloud, el cliente de CLI o cualquier otra interfaz que use para
ejecutar consultas, y cree la tabla de destino:
- En Azure Data Factory Studio, seleccione Author en el panel izquierdo. Pase el cursor sobre el elemento Dataset, haga clic en el icono de tres puntos y elija New dataset.
- En la barra de búsqueda, escriba REST, seleccione REST y haga clic en Continue. Introduzca un nombre para su conjunto de datos y seleccione el servicio vinculado que creó en el paso anterior. Haga clic en OK para crear el conjunto de datos.
-
Ahora debería ver el conjunto de datos recién creado en la sección Datasets
del panel Factory Resources a la izquierda. Seleccione el conjunto de datos para
abrir sus propiedades. Verá el parámetro
pQueryque se definió en el servicio vinculado. Haga clic en el campo de texto Value. Después, haga clic en Add dynamic content. -
En el panel que se abre, pegue la siguiente consulta:
Todas las comillas simples
' de la consulta deben sustituirse por dos comillas simples
''. Esto es necesario debido al analizador de expresiones de Azure Data Factory. Si no
las escapa, puede que no vea un error de inmediato, pero fallará
más adelante cuando intente usar o guardar el conjunto de datos. Por ejemplo, 'best_effort'
debe escribirse como ''best_effort''.- Haga clic en OK para guardar la expresión. Haga clic en Test connection. Si todo está configurado correctamente, verá el mensaje Connection successful. Haga clic en Publish all en la parte superior de la página para guardar los cambios.
Configuración de un conjunto de datos de ejemplo
Para que esta guía siga siendo concisa, no detallaremos los pasos exactos para crear el
conjunto de datos de origen en Azure Data Factory. Puede cargar los datos de muestra en cualquier
servicio de almacenamiento que prefiera, por ejemplo, Azure Blob Storage, Microsoft SQL
Server o incluso en otro formato de archivo compatible con Azure Data Factory.
Crear una actividad de copia para transferir datos a ClickHouse
sensors de ClickHouse.
- Abra Azure Data Factory Studio y vaya a la pestaña Author. En el panel Factory Resources, pase el cursor sobre Pipeline, haga clic en el icono de tres puntos y seleccione New pipeline.
- En el panel Activities, expanda la sección Move and transform y arrastre la actividad Copy data al lienzo.
- Seleccione la pestaña Source y elija el dataset de origen que creó anteriormente.
-
Vaya a la pestaña Sink y seleccione el dataset de ClickHouse creado para la
tabla
sensors. Establezca Request method en POST. Asegúrese de que HTTP compression type esté configurado como None.
Recomendamos mantener el tamaño de lote predeterminado de 10.000, o incluso aumentarlo
más. Para obtener más información, consulte
Selecting an Insert Strategy / Batch inserts if synchronous.
- Haga clic en Debug en la parte superior del lienzo para ejecutar el pipeline. Tras una breve espera, la actividad se pondrá en cola y se ejecutará. Si todo está configurado correctamente, la tarea debería finalizar con el estado Success.
- Una vez completado, haga clic en Publish all para guardar los cambios en el pipeline y el dataset.