Configuración de las sesiones interactivas de AWS Glue para cuadernos de Jupyter y AWS Glue Studio - AWS Glue

Configuración de las sesiones interactivas de AWS Glue para cuadernos de Jupyter y AWS Glue Studio

Introducción a los comandos mágicos de Jupyter

Los comandos mágicos de Jupyter son comandos que se pueden ejecutar al principio de una celda o como un cuerpo de celda completo. Los comandos mágicos comienzan por % en el caso de los comandos mágicos de línea, y por %% si son comandos mágicos de celda. Los comandos mágicos de línea como %region y %connections se pueden ejecutar con varios comandos mágicos en una celda, o bien con código incluido en el cuerpo de la celda, como en el siguiente ejemplo.

%region us-east-2 %connections my_rds_connection dy_f = glue_context.create_dynamic_frame.from_catalog(database='rds_tables', table_name='sales_table')

Los comandos mágicos de celda deben utilizar toda la celda y pueden hacer que el comando abarque varias líneas. A continuación aparece un ejemplo de %%sql.

%%sql select * from rds_tables.sales_table

Comandos mágicos compatibles con las sesiones interactivas de AWS Glue para Jupyter

Los siguientes son comandos mágicos que se pueden utilizar con sesiones interactivas de AWS Glue para cuadernos de Jupyter.

Comandos mágicos de las sesiones

Nombre Tipo Descripción
%help n/a Devuelve una lista de descripciones y tipos de entrada para todos los comandos mágicos.
%profile Cadena Especifica un perfil en su configuración de AWS que se utilizará como proveedor de credenciales.
%region Cadena

Especifica la Región de AWS en la que inicializar una sesión. Valor predeterminado de ~/.aws/configure.

Ejemplo: %region us-west-1

%idle_timeout Int

Número de minutos de inactividad tras los que se agotará el tiempo de espera de una sesión una vez que se haya ejecutado una celda. El valor predeterminado de tiempo de inactividad para las sesiones de ETL de Spark es el tiempo de espera predeterminado: 2880 minutos (48 horas). Para otros tipos de sesiones, consulte la documentación correspondiente.

Ejemplo: %idle_timeout 3000

%session_id n/a Devuelve el ID de la sesión en ejecución.
%session_id_prefix Cadena

Defina una cadena que precederá a todos los ID de sesión con el formato [session_id_prefix]-[session_id] ([prefijo_id_sesión]-[id_sesión]). Si no se proporciona un ID de sesión, se generará un UUID aleatorio. Este comando mágico no se admite cuando se ejecuta un cuaderno de Jupyter en AWS Glue Studio.

Ejemplo: %session_id_prefix 001

%status Devuelve el estado de la sesión actual de AWS Glue, incluyendo su duración, configuración y rol o usuario ejecutante.
%stop_session Detiene la sesión actual.
%list_sessions Se enumeran todas las sesiones que se están ejecutando actualmente por nombre e ID.
%session_type Cadena

Establece el tipo de sesión en Streaming, ETL o Ray.

Ejemplo: %session_type Streaming

%glue_version Cadena

Versión de AWS Glue que debe utilizar esta sesión.

Ejemplo: %glue_version 3.0

Comandos mágicos para seleccionar los tipos de trabajo

Nombre Tipo Descripción
%streaming Cadena Cambia el tipo de sesión a streaming de AWS Glue.
%etl Cadena Cambia el tipo de sesión a ETL de AWS Glue.
%glue_ray Cadena Cambia el tipo de sesión a AWS Glue para Ray. Consulte Comandos mágicos compatibles con las sesiones interactivas de AWS Glue Ray.

Comandos mágicos de configuración de AWS Glue para Spark

El comando mágico de %%configure es un diccionario en formato JSON que consta de todos los parámetros de configuración para una sesión. Cada parámetro se puede especificar aquí o mediante comandos mágicos individuales.

Nombre Tipo Descripción
%%configure Diccionario

Especifica un diccionario en formato JSON que consta de todos los parámetros de configuración para una sesión. Cada parámetro se puede especificar aquí o mediante comandos mágicos individuales.

Para obtener una lista de parámetros y ejemplos de cómo utilizar %%configure, consulte Argumentos de comandos mágicos celulares %%configure.

%iam_role Cadena

Especifica un ARN de rol de IAM con el que ejecutar la sesión. Valor predeterminado de ~/.aws/configure.

Ejemplo: %iam_role AWSGlueServiceRole

%number_of_workers Int

Número de procesos de empleados de un worker_type definido que se asignan cuando se ejecuta un trabajo. También se debe configurar worker_type. El valor predeterminado de number_of_workers es 5.

Ejemplo: %number_of_workers 2

%additional_python_modules Enumeración

Lista separada por comas de módulos de Python adicionales que se deben incluir en el clúster (pueden ser de PyPI o S3).

Ejemplo:%additional_python_modules pandas, numpy.

%%tags Cadena

Agrega etiquetas a una sesión. Especifique las etiquetas entre corchetes { }. Cada par de nombres de etiquetas está entre paréntesis (“”) y separado por una coma (,).

%%tags {"billing":"Data-Platform", "team":"analytics"}

Use el comando mágico %status para ver las etiquetas asociadas a la sesión.

%status
Session ID: <sessionId> Status: READY Role: <example-role> CreatedOn: 2023-05-26 11:12:17.056000-07:00 GlueVersion: 3.0 Job Type: glueetl Tags: {'owner':'example-owner', 'team':'analytics', 'billing':'Data-Platform'} Worker Type: G.4X Number of Workers: 5 Region: us-west-2 Applying the following default arguments: --glue_kernel_version 0.38.0 --enable-glue-datacatalog true Arguments Passed: ['--glue_kernel_version: 0.38.0', '--enable-glue-datacatalog: true']
%%assume_role Diccionario

Especifique un diccionario en formato JSON o una cadena ARN de rol de IAM para crear una sesión para el acceso entre cuentas.

Ejemplo con ARN:

%%assume_role { 'arn:aws:iam::XXXXXXXXXXXX:role/AWSGlueServiceRole' }

Ejemplo con credenciales:

%%assume_role {{ "aws_access_key_id" = "XXXXXXXXXXXX", "aws_secret_access_key" = "XXXXXXXXXXXX", "aws_session_token" = "XXXXXXXXXXXX" }}

Argumentos de comandos mágicos celulares %%configure

El comando mágico de %%configure es un diccionario en formato JSON que consta de todos los parámetros de configuración para una sesión. Cada parámetro se puede especificar aquí o mediante comandos mágicos individuales. A continuación se muestran ejemplos de argumentos compatibles con el comando mágico celular %%configure. Utilice el prefijo -- para los argumentos de ejecución especificados para el trabajo. Ejemplo:

%%configure { "--user-jars-first": "true", "--enable-glue-datacatalog": "false" }

Para obtener más información sobre los parámetros del trabajo, consulte Parámetros del flujo de trabajo.

Configuración de la sesión

Parámetro Tipo Descripción
max_retries Int

Número máximo de reintentos permitidos para esta tarea si se genera un error.

%%configure { "max_retries": "0" }
max_concurrent_runs Int El número máximo de ejecuciones simultáneas que están permitidas para un trabajo.

Ejemplo:

%%configure { "max_concurrent_runs": "3" }

Parámetros de la sesión

Parámetro Tipo Descripción
--enable-spark-ui Booleano Activa la interfaz de usuario de Spark para supervisar y depurar los trabajos de AWS Glue ETL.
%%configure { "--enable-spark-ui": "true" }
--spark-event-logs-path Cadena Especifica una ruta de Amazon S3. Al usar la característica de monitoreo de la interfaz de usuario de Spark.

Ejemplo:

%%configure { "--spark-event-logs-path": "s3://path/to/event/logs/" }
--script_location Cadena Especifica la ruta de S3 a un script que ejecuta un flujo de trabajo.

Ejemplo:

%%configure { "script_location": "s3://new-folder-here" }
--SECURITY_CONFIGURATION Cadena

El nombre de una configuración de seguridad de AWS Glue

Ejemplo:

%%configure { "--security_configuration": { "encryption_type": "kms", "kms_key_id": "YOUR_KMS_KEY_ARN" } }
--job-language Cadena El lenguaje de programación del script. Acepta un valor de “scala” o “python”. El valor predeterminado es “python”.

Ejemplo:

%%configure { "--job-language": "scala" }
--class Cadena La clase de Scala que sirve de punto de entrada del script de Scala. El valor predeterminado es nulo.

Ejemplo:

%%configure { "--class": "className" }
--user-jars-first Booleano Prioriza los archivos JAR adicionales del cliente en la ruta de clases. El valor predeterminado es nulo.

Ejemplo:

%%configure { "--user-jars-first": "true" }
--use-postgres-driver Booleano Prioriza el controlador JDBC de Postgres en la ruta de clases para evitar un conflicto con el controlador JDBC Amazon Redshift. El valor predeterminado es nulo.

Ejemplo:

%%configure { "--use-postgres-driver": "true" }
--extra-files List(cadena) Las rutas de Amazon S3 a archivos adicionales, por ejemplo, archivos de configuración que AWS Glue copia en el directorio de trabajo del script antes de ejecutarlo.

Ejemplo:

%%configure { "--extra-files": "s3://path/to/additional/files/" }
--job-bookmark-option Cadena Controla el comportamiento de un marcador de trabajo. Acepta los valores 'job-bookmark-enable', 'job-bookmark-disable' o 'job-bookmark-pause'. El valor predeterminado es “job-bookmark-disable”.

Ejemplo:

%%configure { "--job-bookmark-option": "job-bookmark-enable" }
--TempDir Cadena Especifica una ruta de Amazon S3 a un bucket que se puede utilizar como directorio temporal para el trabajo. El valor predeterminado es nulo.

Ejemplo:

%%configure { "--TempDir": "s3://path/to/temp/dir" }
--enable-s3-parquet-optimized-committer Booleano Habilita el confirmador optimizado para Amazon S3 de EMRFS de forma que puedan escribirse datos de Parquet en Amazon S3. El valor predeterminado es “verdadero”.

Ejemplo:

%%configure { "--enable-s3-parquet-optimized-committer": "false" }
--enable-rename-algorithm-v2 Booleano Establece la versión del algoritmo de cambio de nombre de EMRFS a la versión 2. El valor predeterminado es “verdadero”.

Ejemplo:

%%configure { "--enable-rename-algorithm-v2": "true" }
--enable-glue-datacatalog Booleano Permite utilizar el Catálogo de datos de AWS Glue como metaalmacén de Apache Spark Hive.

Ejemplo:

%%configure { "--enable-glue-datacatalog": "true" }
--enable-metrics Booleano Permite recopilar métricas para generar perfiles de trabajo en la ejecución de trabajos. La opción predeterminada es 'falso'.

Ejemplo:

%%configure { "--enable-metrics": "true" }
--enable-continuous-cloudwatch-log Booleano Permite un registro continuo en tiempo real de los trabajos de AWS Glue. La opción predeterminada es 'falso'.

Ejemplo:

%%configure { "--enable-continuous-cloudwatch-log": "true" }
--enable-continuous-log-filter Booleano Especifica un filtro estándar o ningún filtro al crear o editar un trabajo habilitado para el registro continuo. El valor predeterminado es “verdadero”.

Ejemplo:

%%configure { "--enable-continuous-log-filter": "true" }
--continuous-log-stream-prefix Cadena Especifica un prefijo de flujo de registro de Amazon CloudWatch personalizado para un trabajo habilitado para el registro continuo. El valor predeterminado es nulo.

Ejemplo:

%%configure { "--continuous-log-stream-prefix": "prefix" }
--continuous-log-conversionPattern Cadena Especifica un patrón de registro de conversión personalizado para un trabajo habilitado para el registro continuo. El valor predeterminado es nulo.

Ejemplo:

%%configure { "--continuous-log-conversionPattern": "pattern" }
--conf Cadena Controla los parámetros de configuración de Spark. Es para casos de uso avanzados. Utilice --conf antes de cada parámetro. Ejemplo:
%%configure { "--conf": "spark.hadoop.hive.metastore.glue.catalogid=123456789012 --conf hive.metastore.client.factory.class=com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory --conf hive.metastore.schema.verification=false" }
timeout Int Determina el periodo máximo durante el cual debe esperar la sesión de Spark hasta que transcurra una instrucción antes de finalizarla.
%%configure { "timeout": "30" }
escalado automático Booleano Determina si se debe usar o no el escalado automático.
%%configure {   "––enable-auto-scaling": "true" }

Comandos mágicos de trabajos de Spark (ETL y streaming)

Nombre Tipo Descripción
%worker_type Cadena Estándar, G.1X o G.2X. También se debe configurar number_of_workers. El valor predeterminado de worker_type es G.1X.
%connections Enumeración

Especifica una lista separada por comas de conexiones que se utilizarán en la sesión.

Ejemplo:

%connections my_rds_connection dy_f = glue_context.create_dynamic_frame.from_catalog(database='rds_tables', table_name='sales_table')
%extra_py_files Enumeración Lista separada por comas de archivos de Python adicionales de Simple Storage Service (Amazon S3).
%extra_jars Enumeración Lista separada por comas de archivos jar adicionales que se deben incluir en el clúster.
%spark_conf Cadena Especifique las configuraciones de Spark personalizadas para la sesión. Por ejemplo, %spark_conf spark.serializer=org.apache.spark.serializer.KryoSerializer.

Comandos mágicos para trabajos de Ray

Nombre Tipo Descripción
%min_workers Int La cantidad mínima de trabajadores que se asignan a un trabajo de Ray. Valor predeterminado: 1.

Ejemplo: %min_workers 2

%object_memory_head Int El porcentaje de memoria libre en el nodo de instancia después de un inicio en caliente. Mínimo: 0. Máximo: 100.

Ejemplo: %object_memory_head 100

%object_memory_worker Int El porcentaje de memoria libre en los nodos de trabajo de la instancia después de un inicio en caliente. Mínimo: 0. Máximo: 100.

Ejemplo: %object_memory_worker 100

Comando mágico de acción

Nombre Tipo Descripción
%%sql Cadena

Ejecuta código SQL. Todas las líneas después del comando mágico inicial %%sql se pasarán como parte del código SQL.

Ejemplo: %%sql select * from rds_tables.sales_table

%matplot Figura de Matplotlib

Visualice sus datos con la biblioteca matplotlib.

Ejemplo:

import matplotlib.pyplot as plt # Set X-axis and Y-axis values x = [5, 2, 8, 4, 9] y = [10, 4, 8, 5, 2] # Create a bar chart plt.bar(x, y) # Show the plot %matplot plt
%plotly Figura de Plotly

Visualice sus datos con la biblioteca de plotly.

Ejemplo:

import plotly.express as px #Create a graphical figure fig = px.line(x=["a","b","c"], y=[1,3,2], title="sample figure") #Show the figure %plotly fig

Denominación de sesiones

Las sesiones interactivas de AWS Glue son recursos de AWS y requieren un nombre. Los nombres deben ser únicos para cada sesión y los administradores de IAM pueden restringirlos. Para obtener más información, consulte Sesiones interactivas con IAM. El kernel de Jupyter genera automáticamente nombres de sesión únicos para usted. No obstante, se puede poner nombre manualmente a las sesiones de dos formas:

  1. Utilizando el archivo de configuración de la AWS Command Line Interface situado en ~.aws/config. Consulte Establecimiento de la configuración de AWS con la AWS Command Line Interface.

  2. Utilizando los comandos mágicos %session_id_prefix. Consulte Comandos mágicos compatibles con las sesiones interactivas de AWS Glue para Jupyter .

Un nombre de sesión se genera de la siguiente manera:

  • Cuando se proporcionan el prefijo y session_id: el nombre de la sesión será {prefijo}-{UUID}.

  • Cuando no se proporciona nada: el nombre de la sesión será {UUID}.

Ponerles prefijos a los nombres de las sesiones permite reconocerlas cuando aparecen en la AWS CLI o la consola.

Especificación de un rol de IAM para las sesiones interactivas

Debe especificar un rol de AWS Identity and Access Management (IAM) para utilizar con el código ETL de AWS Glue que ejecuta con sesiones interactivas.

El rol requiere los mismos permisos de IAM que los necesarios para ejecutar trabajos de AWS Glue. Consulte Crear un rol de IAM para AWS Glue para obtener más información sobre cómo crear un rol para trabajos y sesiones interactivas de AWS Glue.

Los roles de IAM se pueden especificar de dos formas:

Configuración de sesiones con perfiles con nombre

Sesiones interactivas de AWS Glue utiliza las mismas credenciales que AWS Command Line Interface o boto3. Sesiones interactivas respeta y utiliza perfiles con nombre tales como la AWS CLI que se encuentra en ~/.aws/config (Linux y MacOS) o %USERPROFILE%\.aws\config (Windows). Para obtener más información, consulte Uso de perfiles con nombre.

Las sesiones interactivas aprovechan los perfiles con nombre permitiendo que se especifiquen el rol de servicio y el prefijo de ID de sesión de AWS Glue en un perfil. Para configurar un rol de perfil, agregue una línea para la clave de iam_role o session_id_prefix al perfil con nombre tal y como se muestra a continuación. El session_id_prefix no requiere comillas. Por ejemplo, si desea agregar un session_id_prefix, ingrese el valor del session_id_prefix=myprefix.

[default] region=us-east-1 aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY glue_iam_role=arn:aws:iam::<AccountID>:role/<GlueServiceRole> session_id_prefix=<prefix_for_session_names> [user1] region=eu-west-1 aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY glue_iam_role=arn:aws:iam::<AccountID>:role/<GlueServiceRoleUser1> session_id_prefix=<prefix_for_session_names_for_user1>

Si tiene un método personalizado para generar credenciales, también puede configurar el perfil para que utilice el parámetro credential_process en el archivo ~/.aws/config. Por ejemplo:

[profile developer] region=us-east-1 credential_process = "/Users/Dave/generate_my_credentials.sh" --username helen

Puede encontrar más información sobre cómo obtener credenciales a través del parámetro credential_process aquí: Obtención de credenciales con un proceso externo.

Si el perfil que está utilizando no tiene configurados una región o un iam_role, debe especificarlos mediante los comandos mágicos %region y %iam_role en la primera celda que ejecute.