Compilación de una canalización de datos mediante Azure Data Factory, DevOps y aprendizaje automático
Azure DevOps Services
Empiece a crear una canalización de datos con la ingesta de datos, la transformación de datos y el entrenamiento del modelo.
Obtenga información sobre cómo obtener datos de un archivo CSV (valores separados por comas) y guardar los datos en Azure Blob Storage. Transforme los datos y guárdelos en un área de almacenamiento provisional. A continuación, entrene un modelo de Machine Learning mediante los datos transformados. Escriba el modelo en Blob Storage como un archivo pickle de Python.
Requisitos previos
Antes de comenzar, necesitará lo siguiente:
- Una cuenta de Azure que tenga una suscripción activa. Cree una cuenta gratuita.
- Una organización activa de Azure DevOps. Suscribirse a Azure Pipelines.
- El rol Administrador para las conexiones de servicio en el proyecto de Azure DevOps. Obtenga información sobre cómo agregar el rol Administrador.
- Datos de sample.csv.
- Acceso a la solución de canalización de datos en GitHub.
- DevOps para Azure Databricks.
Aprovisionamiento de los recursos de Azure
Inicie sesión en Azure Portal.
En el menú, seleccione el botón Cloud Shell. Cuando se le solicite, seleccione la experiencia de Bash.
Nota:
Necesitará un recurso de Azure Storage para conservar los archivos que cree en Azure Cloud Shell. Al abrir Cloud Shell por primera vez, se le pedirá que cree un grupo de recursos, una cuenta de almacenamiento y un recurso compartido de Azure Files. Esta configuración se usa automáticamente para todas las sesiones de Cloud Shell futuras.
Selección de una región de Azure
Una región consiste en uno o varios centros de datos de Azure de una ubicación geográfica. Este de EE. UU., Oeste de EE. UU. y Europa del Norte son ejemplos de regiones. Todos los recursos de Azure, incluida una instancia de App Service, tienen una región asignada.
Para facilitar la ejecución de los comandos, empezaremos seleccionando una región predeterminada. Después de especificar la región predeterminada, los comandos posteriores la usan a menos que especifique otra.
En Cloud Shell, ejecute el comando
az account list-locations
siguiente para enumerar las regiones que están disponibles en la suscripción de Azure.az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output table
En la columna
Name
de la salida, elija una región cercana. Por ejemplo, elijaasiapacific
owestus2
.Ejecute
az config
para establecer la región predeterminada. En el ejemplo siguiente, reemplace<REGION>
por el nombre de la región que eligió.az config set defaults.location=<REGION>
En este ejemplo se establece
westus2
como la región predeterminada.az config set defaults.location=westus2
Creación de variables de Bash
En Cloud Shell, genere un número aleatorio. Usará este número para crear nombres únicos globales para determinados servicios en el paso siguiente.
resourceSuffix=$RANDOM
Cree nombres únicos globales para la cuenta de almacenamiento y el almacén de claves. Los siguientes comandos usan comillas dobles, que indican a Bash que interpole las variables mediante la sintaxis insertada.
storageName="datacicd${resourceSuffix}" keyVault="keyvault${resourceSuffix}"
Cree una variable de Bash más para almacenar los nombres y la región del grupo de recursos. En el ejemplo siguiente, reemplace
<REGION>
por la región que eligió para la región predeterminada.rgName='data-pipeline-cicd-rg' region='<REGION>'
Cree nombres de variables para las instancias de Azure Data Factory y Azure Databricks.
datafactorydev='data-factory-cicd-dev' datafactorytest='data-factory-cicd-test' databricksname='databricks-cicd-ws'
Creación de recursos de Azure
Ejecute el siguiente comando
az group create
para crear un grupo de recursos mediantergName
.az group create --name $rgName
Ejecute el siguiente comando
az storage account create
para crear una nueva cuenta de almacenamiento.az storage account create \ --name $storageName \ --resource-group $rgName \ --sku Standard_RAGRS \ --kind StorageV2
Ejecute el siguiente comando
az storage container create
para crear dos contenedores,rawdata
yprepareddata
.az storage container create -n rawdata --account-name $storageName az storage container create -n prepareddata --account-name $storageName
Ejecute el siguiente comando
az keyvault create
para crear un nuevo almacén de claves.az keyvault create \ --name $keyVault \ --resource-group $rgName
Cree una nueva factoría de datos mediante la interfaz de usuario del portal o la CLI de Azure:
- Nombre:
data-factory-cicd-dev
- Versión:
V2
- Grupos de recursos:
data-pipeline-cicd-rg
- Ubicación: su ubicación más cercana
- Desactive la selección de Habilitar Git.
Agregue la extensión Azure Data Factory.
az extension add --name datafactory
Ejecute el siguiente comando
az datafactory create
para crear una factoría de datos.az datafactory create \ --name data-factory-cicd-dev \ --resource-group $rgName
Copie el identificador de suscripción. La factoría de datos usa este identificador más adelante.
- Nombre:
Cree una nueva factoría de datos mediante la interfaz de usuario del portal o la CLI de Azure. Esta factoría de datos se usa para realizar pruebas.
- Nombre:
data-factory-cicd-test
- Versión:
V2
- Grupos de recursos:
data-pipeline-cicd-rg
- Ubicación: su ubicación más cercana
- Desactive la selección de Habilitar GIT.
Ejecute el siguiente comando
az datafactory create
para crear una factoría de datos para las pruebas.az datafactory create \ --name data-factory-cicd-test \ --resource-group $rgName
Copie el identificador de suscripción. La factoría de datos usa este identificador más adelante.
- Nombre:
Agregue un nuevo servicio de Azure Databricks:
- Grupos de recursos:
data-pipeline-cicd-rg
- Nombre del área de trabajo:
databricks-cicd-ws
- Ubicación: su ubicación más cercana
Agregue la extensión de Azure Databricks si aún no está instalada.
az extension add --name databricks
Ejecute el siguiente comando
az databricks workspace create
para crear una nueva área de trabajo.az databricks workspace create \ --resource-group $rgName \ --name databricks-cicd-ws \ --location eastus2 \ --sku trial
Copie el identificador de suscripción. El servicio Databricks usa este identificador más adelante.
- Grupos de recursos:
Carga de datos en el contenedor de almacenamiento
- En el Azure Portal, abra la cuenta de almacenamiento en el grupo de recursos
data-pipeline-cicd-rg
. - Vaya a Servicio de Blob>Contenedores.
- Abra el contenedor de
prepareddata
. - Cargue el archivo sample.csv.
Configuración de Key Vault
Use Azure Key Vault para almacenar toda la información de conexión de los servicios de Azure.
Creación de un token de acceso personal de Databricks
- En el Azure Portal, vaya a Databricks y abra el área de trabajo.
- En la interfaz de usuario de Azure Databricks, cree y copie un token de acceso personal.
Copia de la clave de cuenta y la cadena de conexión de la cuenta de almacenamiento
- Vaya a la cuenta de almacenamiento.
- Abra Claves de acceso.
- Copie la primera clave y la cadena de conexión.
Guardar valores en Key Vault
Cree tres secretos:
- databricks-token:
your-databricks-pat
- StorageKey:
your-storage-key
- StorageConnectString:
your-storage-connection
- databricks-token:
Ejecute el siguiente comando
az keyvault secret set
para agregar secretos al almacén de claves.az keyvault secret set --vault-name "$keyVault" --name "databricks-token" --value "your-databricks-pat" az keyvault secret set --vault-name "$keyVault" --name "StorageKey" --value "your-storage-key" az keyvault secret set --vault-name "$keyVault" --name "StorageConnectString" --value "your-storage-connection"
Importación de la solución de canalización de datos
- Inicie sesión en su organización de Azure DevOps y vaya al proyecto.
- Vaya a Repositorios e importe la versión bifurcada del repositorio de GitHub. Para obtener más información, consulte Importación de un repositorio de Git en el proyecto.
Agregar una conexión de servicio de Azure Resource Manager
- Creación de una conexión de servicio de Azure Resource Manager
- Seleccione Registro de aplicaciones (automático) y Federación de identidades de carga de trabajo.
- Selecciona tu suscripción.
- Elija el grupo de recursos data-pipeline-cicd-rg.
- Asigne un nombre a la conexión de servicio
azure_rm_connection
. - Seleccione Conceder permiso de acceso a todas las canalizaciones. Debe tener el rol Administrador de conexiones de servicio para seleccionar esta opción.
Adición de variables de canalización
Cree un nuevo grupo de variables denominado
datapipeline-vg
.Agregue la extensión de Azure DevOps si aún no está instalada.
az extension add --name azure-devops
Inicie sesión en su organización de Azure DevOps.
az devops login --org https://dev.azure.com/<yourorganizationname>
az pipelines variable-group create --name datapipeline-vg -p <yourazuredevopsprojectname> --variables \ "LOCATION=$region" \ "RESOURCE_GROUP=$rgName" \ "DATA_FACTORY_NAME=$datafactorydev" \ "DATA_FACTORY_DEV_NAME=$datafactorydev" \ "DATA_FACTORY_TEST_NAME=$datafactorytest" \ "ADF_PIPELINE_NAME=DataPipeline" \ "DATABRICKS_NAME=$databricksname" \ "AZURE_RM_CONNECTION=azure_rm_connection" \ "DATABRICKS_URL=<URL copied from Databricks in Azure portal>" \ "STORAGE_ACCOUNT_NAME=$storageName" \ "STORAGE_CONTAINER_NAME=rawdata"
Cree un segundo grupo de variables denominado
keys-vg
. Este grupo extrae variables de datos de Key Vault.Seleccione Vincular secretos desde una instancia de Azure Key Vault como variables. Para más información, consulte Vinculación de un grupo de variables a secretos en Azure Key Vault.
Autorización de la suscripción de Azure.
Elija todos los secretos disponibles para agregarlos como variables (
databricks-token
,StorageConnectString
,StorageKey
).
Configuración de Azure Databricks y Azure Data Factory
Siga los pasos de las secciones siguientes para configurar Azure Databricks y Azure Data Factory.
Creación de un ámbito de pruebas en Azure Databricks
- En Azure Portal, vaya a Almacén de claves>Propiedades.
- Copie el nombre DNS y el identificador de recurso.
- En el área de trabajo de Azure Databricks, crear un ámbito de secreto denominado
testscope
.
Adición de un nuevo clúster en Azure Databricks
- En el área de trabajo de Azure Databricks, vaya a Clústeres.
- Seleccione Create cluster (Crear clúster).
- Asigne un nombre al nuevo clúster y guárdelo.
- Seleccione el nombre del clúster.
- En la cadena de dirección URL, copie el contenido entre
/clusters/
y/configuration
. Por ejemplo, en la cadenaclusters/0306-152107-daft561/configuration
, se copiaría0306-152107-daft561
. - Guarde esta cadena para usarla más adelante.
Configuración del repositorio de código en Azure Data Factory
- En Azure Data Factory, vaya a Creador y monitor. Para obtener más información, consulte Creación de una factoría de datos.
- Seleccione Configurar repositorio de código y, a continuación, conecte el repositorio.
- Tipo de repositorio: Git de Azure DevOps
- Organización de Azure DevOps: su cuenta activa
- Nombre del proyecto: proyecto de canalización de datos de Azure DevOps
- Nombre del repositorio de Git: usar existente.
- Seleccione la rama principal para la colaboración.
- Establezca /azure-data-pipeline/factorydata como carpeta raíz.
- Rama en la que se va a importar el recurso: seleccione Usar existente y principal.
Vinculación de Azure Data Factory al almacén de claves
- En Azure portal, abra el almacén de claves.
- Seleccione Directivas de acceso.
- Seleccione Agregar directiva de acceso.
- En Configurar desde la plantilla, seleccione Administración de claves y secretos.
- En Seleccionar entidad de seguridad, busque el nombre de la factoría de datos de desarrollo y agréguelo.
- Seleccione Agregar para agregar las directivas de acceso.
- Repita estos pasos para agregar una directiva de acceso para la factoría de datos de prueba.
Actualización del servicio vinculado del almacén de claves en Azure Data Factory
- Vaya a Administrar>Servicios vinculados.
- Actualice el almacén de claves de Azure para conectarse a la suscripción.
Actualización del servicio vinculado de almacenamiento en Azure Data Factory
- Vaya a Administrar>Servicios vinculados.
- Actualice el valor de Azure Blob Storage para conectarse a la suscripción.
Actualización del servicio vinculado de Azure Databricks en Azure Data Factory
- Vaya a Administrar>Servicios vinculados.
- Actualice el valor de Azure Databricks para conectarse a la suscripción.
- En el identificador de clúster existente, escriba el valor del clúster que guardó anteriormente.
Prueba y publicación de la factoría de datos
- En Azure Data Factory, vaya a Editar.
- Abra
DataPipeline
. - Seleccione Variables.
- Compruebe que
storage_account_name
hace referencia a la cuenta de almacenamiento en el Azure Portal. Actualice el valor predeterminado si es necesario. Guarde los cambios. - Seleccione Validar para comprobar
DataPipeline
. - Seleccione Publicar para publicar recursos de data-factory en la rama
adf_publish
del repositorio.
Ejecución de la canalización de CI/CD
Siga estos pasos para ejecutar la canalización de integración continua y entrega continua (CI/CD):
- Vaya a la página de Canalizaciones. A continuación, elija la acción para crear una canalización.
- Seleccione git de Azure Repos como ubicación del código fuente.
- Cuando aparezca la lista de repositorios, seleccione el que corresponda.
- Al configurar la canalización, seleccione Archivo YAML de Azure Pipelines existente. Elija el archivo YAML: /azure-data-pipeline/data_pipeline_ci_cd.yml.
- Ejecución de la canalización Al ejecutar la canalización por primera vez, es posible que tenga que conceder permiso para acceder a un recurso durante la ejecución.
Limpieza de recursos
Si no va a seguir usando esta aplicación, elimine la canalización de datos siguiendo estos pasos:
- Elimine el grupo de recursos
data-pipeline-cicd-rg
. - Elimine el proyecto de Azure DevOps.