Logotipo de Zephyrnet

Automatice los trabajos de ETL entre Amazon RDS para SQL Server y Azure Managed SQL con AWS Glue Studio

Fecha:

Hoy en día, muchos clientes están siguiendo una estrategia de múltiples nubes. Pueden optar por utilizar varios servicios gestionados en la nube, como Servicio de base de datos relacional de Amazon (Amazon RDS) para SQL Server y Instancias administradas de Azure SQL, para realizar tareas de análisis de datos, pero seguir utilizando las herramientas tradicionales de extracción, transformación y carga (ETL) para integrar y procesar los datos. Sin embargo, las herramientas ETL tradicionales pueden requerir que desarrolle scripts personalizados, lo que dificulta la automatización de ETL.

En esta publicación, le muestro cómo automatizar trabajos de ETL entre Amazon RDS para SQL Server y Azure SQL Managed Instances usando Estudio de pegamento de AWS, que es parte de Pegamento AWS, un servicio de integración sin servidor completamente administrado. AWS Glue Studio tiene una interfaz gráfica que facilita la creación, ejecución y supervisión de trabajos de ETL, y puede crear una programación para ejecutar sus trabajos en momentos específicos.

Resumen de la solución

Para mover datos de una base de datos a otra, existen diferentes servicios disponibles en las instalaciones o en la nube, que varían según los límites de ancho de banda, los cambios continuos (CDC), las modificaciones de esquemas y tablas, y otras características. Más allá de eso, necesitamos aplicar transformaciones de datos avanzadas, monitorear y automatizar los trabajos de ETL. Aquí es donde AWS Glue Studio puede ayudarnos a facilitar estas actividades.

Como se muestra en el siguiente diagrama, usamos AWS Glue Studio como el middleware para extraer datos de la base de datos de origen (en este caso, una Instancia administrada de Azure SQL), luego creamos y automatizamos el trabajo de ETL usando una de las transformaciones preconstruidas en AWS Estudio de pegamento. Finalmente, cargamos los datos en la base de datos de destino (en este caso, una instancia de RDS para SQL Server).

El flujo de trabajo de la solución consta de los siguientes pasos:

  1. Cree conexiones para las bases de datos de origen y de destino.
  2. Cree y ejecute rastreadores de AWS Glue.
  3. Cree y ejecute un trabajo de ETL que transforme los datos y los cargue del origen al destino.
  4. Programe el trabajo de ETL para que se ejecute automáticamente.
  5. Supervise el trabajo de ETL.

Requisitos previos

Complete los siguientes pasos de requisitos previos:

  1. Instalar SQL Server Management Studio (SSMS) o una herramienta de cliente equivalente.
  2. Establece una Conexión VPN entre Nube privada virtual de Amazon (Amazon VPC) y la subred privada de Azure.
  3. Cree un grupo de seguridad para AWS Glue ENI en su VPC.
  4. Crear una Gestión de identidades y accesos de AWS (IAM) rol para AWS Glue. Para obtener instrucciones, consulte Configuración de permisos de IAM para AWS Glue.
  5. Abra los puertos de firewall apropiados en la subred privada de Azure..
  6. Cree una tabla de base de datos de origen (instancia administrada de Azure SQL). Puede implementar la instancia de la base de datos de Azure usando lo siguiente QuickStart. Con fines de prueba, importo el público Trabajo de aventura base de datos de muestra y use la tabla dbo.Employee. Ver el siguiente código:
    #Query table
    SELECT * FROM [AdventureWorksLT2019].[dbo].[Employee]

  7. Cree la tabla de la base de datos de destino (Amazon RDS for SQL Server). Para implementar la instancia de RDS, consulte Cree y conéctese a una base de datos de Microsoft SQL Server con Amazon RDS. Puede crear una base de datos y una tabla vacías con las siguientes instrucciones. Esta es la tabla donde se almacenarán los datos provenientes de Azure.
#Create database
CREATE DATABASE AdventureWorksonRDS;
#Create table
CREATE TABLE Employee
(EmpID INT NOT NULL,
EmpName VARCHAR(50) NOT NULL,
Designation VARCHAR(50) NULL,
Department VARCHAR(50) NULL,
JoiningDate DATETIME NULL,
CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED (EmpID)

#Query table
SELECT * FROM [AdventureWorksonRDS].[dbo].[Employee]

Crea conexiones

El primer paso es completar nuestro catálogo de datos de AWS Glue con la información del esquema proveniente de nuestras fuentes de datos de origen y de destino.

Para hacer eso, primero creamos personales. Una conexión es un objeto de catálogo de datos que almacena información de conexión para un almacén de datos en particular. Las conexiones almacenan credenciales de inicio de sesión, cadenas de URI, información de VPC y más. La creación de conexiones en el catálogo de datos ahorra el esfuerzo de tener que especificar los detalles de la conexión cada vez que crea un rastreador o un trabajo.

Crear una conexión para Instancia administrada de Azure SQL

Para crear la conexión a nuestra base de datos de origen, complete los siguientes pasos:

  1. En la consola de AWS Glue, elija Estudio de pegamento de AWS.
  2. En el panel de navegación de la consola de AWS Glue Studio, elija Conectores.
  3. Elige Crear conexión.
  4. Nombre, introduzca AzureSQLManaged.
  5. Tipo de conexión, escoger JDBC.
  6. URL de JDBC, utilice la sintaxis de SQL Server jdbc:protocol://host:port;database=db_name.

Puede encontrar el host y el nombre de la base de datos en la consola de servicio de Azure SQL Managed Instance, en la General .Para este ejemplo específico, usamos la siguiente información para nuestra instancia de Azure SQL:

    • Protocolosqlserver
    • Anfitriónadi-qa-sql-managed-instance-test.public.xxxxxxxxxxxx.database.windows.net
    • Puerto3342
    • Nombre de la base de datosAdventureWorksLT2019

Ingrese su nombre de usuario y contraseña.
Elige Crear conexión.

Cree una conexión para Amazon RDS para SQL Server

Para crear una conexión para nuestra fuente de datos de destino, complete los siguientes pasos:

  1. En la consola de AWS Glue Studio, elija Conectores en el panel de navegación.
  2. Elige Crear conexión.
  3. Nombre, introduzca AWSRDSforSQL.
  4. Tipo de conexión, escoger RDS de Amazon.
  5. Motor de base de datos, escoger Microsoft SQL Server.
  6. Instancias de base de datos, elija su instancia de base de datos de RDS.
  7. Nombre de la base de datos, introduzca AdventureWorksonRDS.
  8. Ingrese su nombre de usuario y contraseña.
  9. Elige Crear conexión.

Ahora puede ver las dos conexiones creadas en el Conexiones .

Cree y ejecute rastreadores de AWS Glue

Puede utilizar un rastreador para rellenar el catálogo de datos de AWS Glue con tablas. Este es el método más común utilizado por la mayoría de los usuarios de AWS Glue. Un rastreador puede rastrear múltiples almacenes de datos en una sola ejecución. Al finalizar, actualiza el catálogo de datos con las tablas que encontró. Los trabajos de ETL que define en AWS Glue utilizan estas tablas de Data Catalog como orígenes y destinos.

Crear un rastreador para Instancia administrada de Azure SQL

Para crear un rastreador para nuestra base de datos de origen, complete los siguientes pasos:

  1. En la consola de AWS Glue, elija Rastreadores en el panel de navegación.
  2. Elige Crear rastreador.
  3. Si los datos no se han asignado a una tabla de AWS Glue, seleccione Todavía no y elige Agregar una fuente de datos.
  4. Fuente de datosescoger JDBC.
  5. Conexión, escoger AzureSQLManaged.
  6. Incluir ruta, especifique la ruta de la base de datos, incluido el esquema: AdventureWorksLT2019/dbo/%.
  7. Elige Agregar una fuente de datos JDBC.                                                                                     
  8. Elige Siguiente.
  9. Elija el rol de IAM creado como parte de los requisitos previos y elija Siguiente.
  10. Elige Agregar base de datos para crear la base de datos de destino en AWS Glue Data Catalog.
  11. Nombre, introduzca azuresqlmanaged_db.
  12. Elige Crear base de datos.
  13. Base de datos de destino, escoger azuresqlmanaged_db.
  14. Elige Siguiente.
  15. Revisa si todo te parece correcto y elige Crear rastreador.

Cree un rastreador para Amazon RDS para SQL Server

Repita los pasos de creación del rastreador para crear el rastreador para la base de datos RDS para SQL Server de destino, utilizando la siguiente información:

  • Nombre del rastreador AmazonRDSSQL_Crawler
  • Fuente de datos – JDBC
  • Conexión AWSRDSforSQL
  • Incluir ruta AdventureWorksonRDS/dbo/%
  • Rol de IAM AWSGlueServiceRoleDefault
  • Nombre de la base de datos amazonrdssql_db

Ejecutar los rastreadores

Ahora es el momento de ejecutar los rastreadores.

  1. En la consola de AWS Glue, elija Rastreadores en el panel de navegación.
  2. Seleccione los rastreadores que creó y elija Ejecutar.
  3. Cuando el rastreador esté completo, elija Bases de datos en el panel de navegación. Aquí puede encontrar las bases de datos descubiertas por el rastreador.
  4. Elige Mesas en el panel de navegación y explore las tablas descubiertas por el rastreador que identificó correctamente el tipo de datos como SQL Server.
  5. Elige la mesa aventuraworkslt2019_dbo_empleado y revise el esquema creado para la fuente de datos.

Crear y ejecutar un trabajo ETL

Ahora que hemos rastreado nuestras bases de datos de origen y de destino, y tenemos los datos en el catálogo de datos de AWS Glue, podemos crear un trabajo de ETL para cargar y transformar estos datos.

  1. En la consola de AWS Glue Studio, elija Empleo en el panel de navegación.
  2. Seleccione Visual con un lienzo en blanco usar una interfaz visual para crear nuestros trabajos ETL.
  3. Elige Crear.
  4. En Fuente menú, seleccione Catálogo de datos de AWS Glue.
  5. En Propiedades de la fuente de datos pestaña, especifique la base de datos y la tabla (para esta publicación, azuresqlmanaged_db y adventureworkslt2019_dbo_employee).
  6. En Transformar menú, seleccione Aplicar mapeo para asignar los campos de origen a la base de datos de destino.
  7. En Transformar pestaña, puede ver los campos de datos que se cargarán, e incluso puede eliminar algunos de ellos si es necesario.
  8. En Target menú, seleccione Catálogo de datos de AWS Glue.
  9. En Propiedades de destino de datos pestaña, elija la base de datos y la tabla donde desea cargar los datos transformados (para esta publicación, amazonrdssql_db y adventureworksrds_dbo_employee).
  10. En Detalles del trabajo pestaña, para Nombre, introduzca ETL_Azure_to_AWS.
  11. Rol de IAM, elija el rol apropiado.
  12. Elige Guardar.
  13. Elige Ejecutar para ejecutar el trabajo.

Si el trabajo de ETL se ejecutó correctamente, debería asignar los datos de la base de datos de origen (Azure SQL) a la base de datos de destino (Amazon RDS for SQL). Para confirmarlo, puede conectarse a la base de datos de destino usando SQL Server Management Studio (SSMS), y consultar el vacío database/table AdventureWorksonRDS/dbo.Employee. Debe tener los datos provenientes de la Instancia administrada de Azure SQL.

#Query table
SELECT * FROM [AdventureWorksonRDS].[dbo].[Employee]

Programe su trabajo ETL

En AWS Glue Studio, puede crear una programación para que sus trabajos se ejecuten en momentos específicos. Esto volverá a importar el conjunto de datos completo y hará referencia al uso de marcadores para realizar cargas incrementales. Puede programar sus trabajos de ETL por horas, días, semanas, meses o de forma personalizada, según sus necesidades. Para programar un trabajo, complete los siguientes pasos:

  1. En AWS Glue Studio, navegue hasta el trabajo que creó.
  2. En Horarios pestaña, elegir Crear horario.
  3. Nombre, ingrese un nombre (por ejemplo, dbo_employee_daily_load).
  4. Elija su frecuencia preferida, hora de inicio y minuto de la hora. Para esta publicación, la programamos diariamente a las 3:00 UTC.
  5. Descripción, ingrese una descripción opcional.
  6. Elige Crear horario.

Confirme en el Horarios pestaña que el horario fue creado y activado con éxito.

Ahora ha automatizado su trabajo ETL para que se ejecute con la frecuencia deseada.

Supervise su trabajo de ETL

El panel de supervisión de trabajos proporciona un resumen general de las ejecuciones de trabajos, con totales para los trabajos con un estado de Correr, Cancelado, éxitoo Fallidos.

La Ron La pestaña muestra los trabajos para el intervalo de fechas y los filtros especificados. Puede filtrar los trabajos según criterios adicionales, como estado, tipo de trabajador, tipo de trabajo y nombre del trabajo.

Conclusión

En esta publicación, repasé los pasos para automatizar trabajos de ETL con AWS Glue Studio, que es una interfaz gráfica fácil de usar para realizar tareas de integración de datos, como descubrir y extraer datos de varias fuentes; enriquecer, limpiar, normalizar y combinar datos; y cargar y organizar datos en bases de datos, almacenes de datos y lagos de datos. Puede encontrar y acceder fácilmente a estos datos mediante el catálogo de datos de AWS Glue. Los ingenieros de datos y los desarrolladores de ETL pueden crear, ejecutar y monitorear visualmente los flujos de trabajo de ETL con unos pocos clics en AWS Glue Studio.


Acerca del autor.

daniel maldonado es Arquitecto de Soluciones de AWS, especializado en cargas de trabajo de Microsoft y tecnologías de big data, y se enfoca en ayudar a los clientes a migrar sus aplicaciones y datos a AWS. Daniel tiene más de 13 años de experiencia trabajando con tecnologías de la información y disfruta ayudando a los clientes a aprovechar los beneficios de ejecutar sus cargas de trabajo en la nube.

punto_img

Información más reciente

punto_img