Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Mejore los núcleos con magic comandos en EMR Studio
Descripción general
Soporte para EMR Studio y EMR Notebooks magic comandos. Comando mágico comandos, o magics, son mejoras que el IPython núcleo proporciona para ayudarle a ejecutar y analizar datos. IPythones un entorno de shell interactivo creado con Python.
Amazon EMR también admite Sparkmagic, un paquete que proporciona núcleos relacionados con Spark (núcleos de PySpark SparkR y Scala) con especificaciones magic comandos y que usa Livy en el clúster para enviar los trabajos de Spark.
Puede usar… magic comandos siempre que tenga un núcleo de Python en su cuaderno EMR. Del mismo modo, cualquier núcleo relacionado con Spark admite Sparkmagic comandos.
Magic comandos, también llamados magics, vienen en dos variedades:
-
Línea magics — Estas magic los comandos se indican con un único
%
prefijo y funcionan en una sola línea de código -
Celda magics — Estas magic los comandos se indican con un
%%
prefijo doble y funcionan en varias líneas de código
Para todos los disponibles magicAsí que, miraEnumeración magic y Sparkmagic Comandos de la de .
Consideraciones y limitaciones
-
EMR sin servidor no admite
%%sh
para ejecutarspark-submit
. No es compatible con los EMR Notebooks magic. -
Los clústeres de Amazon EMR en EKS no son compatibles Sparkmagic comandos para EMR Studio. Esto se debe a que los núcleos de Spark que se utilizan con los puntos de conexión gestionados están integrados en Kubernetes y no son compatibles con Sparkmagic y Livy. Como solución alternativa, puedes establecer la configuración de Spark directamente en el SparkContext objeto, como se muestra en el siguiente ejemplo.
spark.conf.set("spark.driver.maxResultSize", '6g')
-
Los siguientes ejemplos de magic los comandos y las acciones están prohibidos por AWS:
-
%alias
-
%alias_magic
-
%automagic
-
%macro
-
Modificar
proxy_user
con%configure
-
Modificar
KERNEL_USERNAME
con%env
o%set_env
-
Enumeración magic y Sparkmagic Comandos de la de
Utilice los siguientes comandos para enumerar los disponibles magic comandos:
-
%lsmagic
muestra todos los disponibles actualmente magic funciones. -
%%help
enumera las relacionadas con Spark disponibles actualmente magic funciones proporcionadas por Sparkmagic paquete.
Usar %%configure
para configurar Spark
Uno de los más útiles Sparkmagic comandos es el %%configure
comando que configura los parámetros de creación de la sesión. En cuanto a los ajustes de conf
, puede establecer cualquier configuración de Spark que se mencione en la documentación de configuración de Apache Spark
ejemplo Agregar un archivo JAR externo a los Cuadernos de EMR desde el repositorio de Maven o Amazon S3
Puede utilizar el siguiente enfoque para añadir una dependencia de un archivo JAR externo a cualquier núcleo relacionado con Spark que sea compatible con Sparkmagic.
%%configure -f {"conf": { "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3", "spark.jars": "s3://
amzn-s3-demo-bucket
/my-jar.jar" } }
ejemplo : Configurar Hudi
Puede utilizar el editor de cuadernos para configurar el cuaderno de EMR de modo que utilice Hudi.
%%configure { "conf": { "spark.jars": "hdfs://apps/hudi/lib/hudi-spark-bundle.jar,hdfs:///apps/hudi/lib/spark-spark-avro.jar", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.hive.convertMetastoreParquet":"false" } }
Usar %%sh
para ejecutar spark-submit
la %%sh
, magic ejecuta comandos de shell en un subproceso de una instancia del clúster adjunto. Normalmente, utilizaría uno de los kernels relacionados con Spark para ejecutar las aplicaciones de Spark en su clúster asociado. Sin embargo, si quieres usar un kernel de Python para enviar una aplicación de Spark, puedes usar lo siguiente magic, sustituyendo el nombre del bucket por el nombre del tuyo en minúsculas.
%%sh spark-submit --master yarn --deploy-mode cluster s3://
amzn-s3-demo-bucket
/test.py
En este ejemplo, el clúster tiene que acceder a la ubicación de s3://
o se producirá un error en el comando.amzn-s3-demo-bucket
/test.py
Puede usar cualquier comando de Linux con el %%sh
magic. Si quieres ejecutar algún comando de Spark o YARN, usa una de las siguientes opciones para crear un usuario de emr-notebook
Hadoop y concederle permisos para ejecutar los comandos:
-
Para crear un usuario nuevo de forma explícita, ejecute los siguientes comandos.
hadoop fs -mkdir /user/emr-notebook hadoop fs -chown emr-notebook /user/emr-notebook
-
Puede activar la suplantación de usuarios en Livy, lo que crea el usuario automáticamente. Para obtener más información, consulta Habilitar la suplantación de usuario para supervisar la actividad del usuario y del trabajo de Spark.
Usar %%display
para visualizar los marcos de datos de Spark
Puedes usar el %%display
magic para visualizar un marco de datos de Spark. Para usar esto magic, ejecute el siguiente comando.
%%display df
Elija ver los resultados en formato de tabla, como se muestra en la siguiente imagen.

También puede optar por visualizar sus datos con cinco tipos de gráficos. Las opciones son gráficos circulares, de dispersión, de líneas, de áreas y de barras.

Utilice EMR Notebooks magics
Amazon EMR proporciona los siguientes cuadernos EMR: magics que puede utilizar con los núcleos basados en Python3 y Spark:
-
%mount_workspace_dir
: monta el directorio del espacio de trabajo en el clúster para que pueda importar y ejecutar código desde otros archivos de su espacio de trabajonota
Con
%mount_workspace_dir
, solo el kernel de Python 3 puede acceder a sus sistemas de archivos locales. Los ejecutores de Spark no tendrán acceso al directorio montado con este kernel. -
%umount_workspace_dir
: desmonta el directorio del espacio de trabajo del clúster -
%generate_s3_download_url
: genera un enlace de descarga temporal en la salida del cuaderno para un objeto de Amazon S3
Requisitos previos
Antes de instalar EMR Notebooks magicPor lo tanto, complete las siguientes tareas:
-
Asegúrese de que Función de servicio para EC2 instancias de clúster (perfil de EC2 instancia) tenga acceso de lectura a Amazon S3.
EMR_EC2_DefaultRole
con la política administradaAmazonElasticMapReduceforEC2Role
cumple con este requisito. Si usa un rol o una política personalizados, asegúrese de que tenga los permisos de S3 necesarios.nota
EMR Notebooks magics se ejecutan en un clúster como usuario del bloc de notas y utilizan el perfil de EC2 instancia para interactuar con Amazon S3. Al montar un directorio del espacio de trabajo en un clúster de EMR, todos los espacios de trabajo y cuadernos de EMR con permiso para asociarse a ese clúster pueden acceder al directorio montado.
De forma predeterminada, los directorios se montan como de solo lectura. Si bien
s3fs-fuse
ygoofys
permiten los montajes de lectura y escritura, le recomendamos especialmente que no modifique los parámetros de montaje para montar directorios en modo de lectura y escritura. Si permite el acceso de escritura, todos los cambios que se realicen en el directorio se escribirán en el bucket de S3. Para evitar que se eliminen o sobrescriban accidentalmente, puede habilitar el control de versiones en su bucket de S3. Para obtener más información, consulte Uso del control de versiones en buckets de S3. -
Ejecute uno de los siguientes scripts en su clúster para instalar las dependencias de EMR Notebooks magic. Para ejecutar un script, puede Usar acciones de arranque personalizadas o seguir las instrucciones de Ejecutar comandos y scripts en un clúster de Amazon EMR cuando ya tenga un clúster en ejecución.
Puede elegir qué dependencia desea instalar. Tanto s3fs-fuse
como goofys son herramientas FUSE (sistema de archivos en el espacio de usuario) que permiten montar un bucket de Amazon S3 como un sistema de archivos local en un clúster. La herramienta s3fs
proporciona una experiencia similar a POSIX. La herramientagoofys
es una buena opción si prefiere el rendimiento en lugar de un sistema de archivos compatible con POSIX.La serie Amazon EMR 7.x usa Amazon Linux 2023, que no es compatible con los repositorios EPEL. Si utiliza Amazon EMR 7.x, siga las instrucciones de s3fs-fuse para realizar la instalación GitHub
. s3fs-fuse
Si usa las series 5.x o 6.x, utilice los siguientes comandos para instalars3fs-fuse
.#!/bin/sh # Install the s3fs dependency for EMR Notebooks magics sudo amazon-linux-extras install epel -y sudo yum install s3fs-fuse -y
OR
#!/bin/sh # Install the goofys dependency for EMR Notebooks magics sudo wget https://github.com/kahing/goofys/releases/latest/download/goofys -P /usr/bin/ sudo chmod ugo+x /usr/bin/goofys
Instale EMR Notebooks magics
nota
Con las versiones 6.0 a 6.9.0 y 5.0 a 5.36.0 de Amazon EMR, solo se admiten las versiones de emr-notebooks-magics
paquete 0.2.0 y superiores %mount_workspace_dir
magic.
Complete los siguientes pasos para instalar EMR Notebooks magic.
-
En su cuaderno, ejecute los siguientes comandos para instalar el paquete
emr-notebooks-magics
. %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
-
Reinicie el núcleo para cargar los EMR Notebooks magic.
-
Verifique la instalación con el siguiente comando, que debería mostrar el texto de ayuda de la salida de
%mount_workspace_dir
.%mount_workspace_dir?
Montar un directorio del espacio de trabajo con %mount_workspace_dir
la %mount_workspace_dir
, magic le permite montar el directorio de Workspace en el clúster de EMR para que pueda importar y ejecutar otros archivos, módulos o paquetes almacenados en el directorio.
En el siguiente ejemplo, se monta todo el directorio del espacio de trabajo en un clúster y se especifica el argumento opcional
para usar goofys para montar el directorio.<--fuse-type>
%mount_workspace_dir .
<--fuse-type goofys>
Para comprobar que el directorio del espacio de trabajo esté montado, utilice el siguiente ejemplo para mostrar el directorio de trabajo actual con el comando ls
. La salida debe mostrar todos los archivos del espacio de trabajo.
%%sh ls
Cuando termine de realizar cambios en su espacio de trabajo, puede desmontar el directorio del espacio de trabajo con el siguiente comando:
nota
El directorio del espacio de trabajo permanece montado en el clúster incluso cuando el espacio de trabajo está detenido o separado. Debe desmontar el directorio del espacio de trabajo de forma explícita.
%umount_workspace_dir
Descargar un objeto de Amazon S3 con %generate_s3_download_url
El comando generate_s3_download_url
, crea una URL prefirmada para un objeto almacenado en Amazon S3. Puede usar la URL prefirmada para descargar el objeto a su máquina local. Por ejemplo, puede ejecutar generate_s3_download_url
para descargar el resultado de una consulta SQL que su código escribe en Amazon S3.
De forma predeterminada, la URL prefirmada es válida durante 60 minutos. Puede cambiar el tiempo de caducidad especificando un número de segundos para la marca --expires-in
. Por ejemplo, --expires-in 1800
crea una URL que es válida durante 30 minutos.
El siguiente ejemplo genera un enlace de descarga para un objeto especificando la ruta completa de Amazon S3:
.s3://EXAMPLE-DOC-BUCKET/path/to/my/object
%generate_s3_download_url
s3://EXAMPLE-DOC-BUCKET/path/to/my/object
Para obtener más información sobre el uso de generate_s3_download_url
, ejecute el siguiente comando para mostrar el texto de ayuda.
%generate_s3_download_url?
Ejecución de un cuaderno en el modo sin encabezado con %execute_notebook
Con %execute_notebook
magic, puede ejecutar otro bloc de notas en modo headless y ver el resultado de cada celda que haya ejecutado. Este magic requiere permisos adicionales para el rol de instancia que Amazon EMR y Amazon EC2 comparten. Para obtener más información sobre cómo conceder permisos adicionales, ejecute el comando %execute_notebook?
.
Durante un trabajo de larga duración, es posible que el sistema entre en modo de suspensión debido a la inactividad o que pierda temporalmente la conectividad a internet. Esto podría interrumpir la conexión entre su navegador y el servidor de Jupyter. En este caso, podría perder la salida de las celdas que ha ejecutado y enviado desde el servidor de Jupyter.
Si ejecuta el portátil en modo headless con %execute_notebook
magic, EMR Notebooks captura la salida de las células en funcionamiento, incluso si la red local sufre una interrupción. Cuadernos de EMR guarda la salida de forma incremental en un nuevo cuaderno con el mismo nombre que el cuaderno que ha utilizado. A continuación, Cuadernos de EMR coloca el cuaderno en una nueva carpeta dentro del espacio de trabajo. Las ejecuciones sin encabezado se realizan en el mismo clúster y utilizan el rol de servicio EMR_Notebook_DefaultRole
, pero los argumentos adicionales pueden alterar los valores predeterminados.
Para ejecutar un cuaderno en el modo sin encabezado, utilice el siguiente comando:
%execute_notebook
<relative-file-path>
Para especificar un ID de clúster y un rol de servicio para una ejecución sin encabezado, use el siguiente comando:
%execute_notebook
<notebook_name>
.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>
Cuando Amazon EMR y Amazon EC2 comparten un rol de instancia, el rol requiere los siguientes permisos adicionales:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:StartNotebookExecution", "elasticmapreduce:DescribeNotebookExecution", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::<AccoundId>:role/EMR_Notebooks_DefaultRole" } ] }
nota
Para utilizar %execute_notebook
magic, instale el emr-notebooks-magics
paquete, versión 0.2.3 o superior.