Aprimoramento de kernels com comandos magic - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Aprimoramento de kernels com comandos magic

Visão geral

EMRmagicComandos de suporte para Studio e EMR Notebooks. Magiccomandos, ou magics, são aprimoramentos que o IPython kernel fornece para ajudá-lo a executar e analisar dados. IPythoné um ambiente de shell interativo criado com Python.

A Amazon EMR também oferece suporte Sparkmagic a um pacote que fornece magic comandos específicos aos kernels relacionados ao Spark (kernels PySpark SparkR e Scala) e que usa o Livy no cluster para enviar trabalhos do Spark.

Você pode usar magic comandos desde que tenha um kernel Python em seu notebook. EMR De forma semelhante, qualquer kernel relacionado ao Spark oferece suporte aos comandos do Sparkmagic.

Os comandos Magic, também chamados de magics, têm duas variedades:

  • Linhas magics: esses comandos magic são indicados por um prefixo % único e operam em uma única linha de código.

  • Células magics: esses comandos magic são indicados por um prefixo %% duplo e operam em várias linhas de código.

Para saber todos os magics disponíveis, consulte Listar os comandos magic e Sparkmagic.

Considerações e limitações

  • EMRO Serverless não suporta %%sh a execução. spark-submit Ele não é compatível com os EMR Notebooks magic s.

  • A Amazon EMR em EKS clusters não oferece suporte a Sparkmagic comandos para o EMR Studio. Isso ocorre porque os kernels Spark que você usa com endpoints gerenciados são integrados ao Kubernetes e não são suportados pelo Sparkmagic e pelo Livy. Você pode definir a configuração do Spark diretamente no SparkContext objeto como uma solução alternativa, conforme demonstra o exemplo a seguir.

    spark.conf.set("spark.driver.maxResultSize", '6g')
  • Os seguintes magic comandos e ações são proibidos por AWS:

    • %alias

    • %alias_magic

    • %automagic

    • %macro

    • Modificar proxy_user com %configure

    • Modificar KERNEL_USERNAME com %env ou %set_env

Listar os comandos magic e Sparkmagic

Use os seguintes comandos para listar os comandos magic disponíveis:

  • %lsmagic lista todas as funções magic disponíveis no momento.

  • %%help lista as funções magic relacionadas ao Spark disponíveis no momento e fornecidas pelo pacote Sparkmagic.

Use %%configure para configurar o Spark

Um dos comandos mais úteis do Sparkmagic é o comando %%configure, que configura os parâmetros de criação da sessão. Ao usar as configurações conf, você pode definir qualquer configuração do Spark mencionada na documentação de configuração do Apache Spark.

exemplo Adicione um JAR arquivo externo aos EMR Notebooks a partir do repositório Maven ou do Amazon S3

Você pode usar a abordagem a seguir para adicionar uma dependência de JAR arquivo externo a qualquer kernel relacionado ao Spark que seja suportado pelo. 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://DOC-EXAMPLE-BUCKET/my-jar.jar" } }
exemplo : Configuração do Hudi

Você pode usar o editor do notebook para configurar seu EMR notebook para usar o 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" } }

Use o %%sh para executar o spark-submit

A %%sh magic executa comandos de shell em um subprocesso em uma instância do cluster anexado. Normalmente, você usaria um dos kernels relacionados ao Spark para executar aplicações do Spark em seu cluster anexado. No entanto, se desejar usar um kernel do Python para enviar uma aplicação do Spark, você pode usar a magic apresentada a seguir, substituindo o nome do bucket pelo nome do seu bucket em letras minúsculas.

%%sh spark-submit --master yarn --deploy-mode cluster s3://DOC-EXAMPLE-BUCKET/test.py

Neste exemplo, o cluster precisa de acesso ao local s3://DOC-EXAMPLE-BUCKET/test.py ou o comando falhará.

Você pode usar qualquer comando do Linux com a %%sh magic. Se você quiser executar qualquer Spark ou qualquer YARN comando, use uma das seguintes opções para criar um usuário do emr-notebook Hadoop e conceder ao usuário permissões para executar os comandos:

Use %%display para visualizar dataframes do Spark

Você pode usar o %%display magic para visualizar um dataframe do Spark. Para usar essa magic, execute o comando apresentado a seguir.

%%display df

Escolha visualizar os resultados em formato de tabela, como mostra a imagem a seguir.

Saída do uso da magic %%display que mostra os resultados em formato de tabela.

Você também pode optar por visualizar os dados com cinco tipos de gráficos. Suas opções incluem gráficos circular, de dispersão, de linha, de área e de barras.

Saída do uso da magic %%display que mostra os resultados em formato de gráfico.

Use EMR notebooks magic como

A Amazon EMR fornece os seguintes EMR notebooks que você pode usar com magic kernels baseados em Python3 e Spark:

  • %mount_workspace_dir: monta seu diretório do Workspace em seu cluster para que você possa importar e executar códigos de outras aplicações em seu Workspace.

    nota

    Com %mount_workspace_dir, somente o kernel do Python 3 pode acessar seus sistemas de arquivos locais. Os executores do Spark não terão acesso ao diretório montado com este kernel.

  • %umount_workspace_dir: desmonta seu diretório do Workspace do seu cluster.

  • %generate_s3_download_url: gera um link de download temporário na saída do seu caderno para um objeto do Amazon S3.

Pré-requisitos

Antes de instalar o EMR Notebooks magic s, conclua as seguintes tarefas:

  • Certifique-se de que seu Função de serviço para EC2 instâncias de cluster (perfil de EC2 instância) tenha acesso de leitura para o Amazon S3. O EMR_EC2_DefaultRole com a política gerenciada AmazonElasticMapReduceforEC2Role atende a esse requisito. Se você usar uma política ou um perfil personalizado, certifique-se de que ele tenha as permissões do S3 necessárias.

    nota

    EMROs notebooks magic são executados em um cluster como usuário do notebook e usam o perfil da EC2 instância para interagir com o Amazon S3. Quando você monta um diretório de espaço de trabalho em um EMR cluster, todos os espaços de trabalho e EMR notebooks com permissão para se conectar a esse cluster podem acessar o diretório montado.

    Por padrão, os diretórios são montados somente para leitura. Embora s3fs-fuse e goofys permitam montagens de leitura e de gravação, recomendamos fortemente que você não modifique os parâmetros de montagem para montar diretórios no modo de leitura e de gravação. Se você permitir o acesso de gravação, todas as alterações realizadas no diretório serão gravadas no bucket do S3. Para evitar a exclusão ou a substituição acidentais, você pode habilitar o versionamento para seu bucket do S3. Para saber mais, consulte Usando o versionamento em buckets do S3.

  • Execute um dos scripts a seguir em seu cluster para instalar as dependências do EMR Notebooks s. magic Para executar um script, você pode Usar ações de bootstrap personalizadas ou seguir as instruções em Executar comandos e scripts em um EMR cluster da Amazon quando você já tiver um cluster em execução.

    Você pode escolher qual dependência instalar. Tanto o s3fs-fuse quanto o goofys são ferramentas FUSE (sistema de arquivos no espaço do usuário) que permitem montar um bucket do Amazon S3 como um sistema de arquivos local em um cluster. A s3fs ferramenta oferece uma experiência semelhante POSIX a. A goofys ferramenta é uma boa opção quando você prefere desempenho a um sistema POSIX de arquivos compatível.

    A série Amazon EMR 7.x usa o Amazon Linux 2023, que não oferece suporte a EPEL repositórios. Se você estiver executando o Amazon EMR 7.x, siga as instruções do s3fs-fuse para instalar GitHub. s3fs-fuse Se você usa as séries 5.x ou 6.x, use os seguintes comandos para instalar. s3fs-fuse

    #!/bin/sh # Install the s3fs dependency for EMR Notebooks magics sudo amazon-linux-extras install epel -y sudo yum install s3fs-fuse -y

    OU

    #!/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 s magic

nota

Com as EMR versões 6.0 a 6.9.0 e 5.0 a 5.36.0 da Amazon, somente as versões de emr-notebooks-magics pacotes 0.2.0 e superiores oferecem suporte. %mount_workspace_dir magic

Conclua as etapas a seguir para instalar o EMR Notebooks magic s.

  1. Em seu caderno, execute os comandos apresentados a seguir para instalar o pacote emr-notebooks-magics.

    %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
  2. Reinicie seu kernel para carregar os EMR Notebooks s. magic

  3. Verifique a instalação com o comando a seguir, que deve exibir o texto de ajuda de saída para %mount_workspace_dir.

    %mount_workspace_dir?

Montagem de um diretório do Workspace com %mount_workspace_dir

O %mount_workspace_dir magic permite que você monte seu diretório do Workspace em seu EMR cluster para que você possa importar e executar outros arquivos, módulos ou pacotes armazenados em seu diretório.

O exemplo a seguir monta todo o diretório do Workspace em um cluster e especifica o opcional <--tipo de fusível> argumento para usar goofys para montar o diretório.

%mount_workspace_dir . <--fuse-type goofys>

Para verificar se o diretório do Workspace está montado, use o exemplo a seguir para exibir o diretório de trabalho atual com o comando ls. A saída deve exibir todos os arquivos em seu Workspace.

%%sh ls

Quando você terminar de fazer as alterações no Workspace, poderá desmontar o diretório do Workspace com o seguinte comando:

nota

O diretório do Workspace permanece montado em seu cluster mesmo quando o Workspace é interrompido ou desanexado. Você deve desmontar explicitamente o diretório do Workspace.

%umount_workspace_dir

Download de um objeto do Amazon S3 com %generate_s3_download_url

O generate_s3_download_url comando cria um pré-assinado URL para um objeto armazenado no Amazon S3. Você pode usar o preassinado URL para baixar o objeto em sua máquina local. Por exemplo, você pode generate_s3_download_url executar o download do resultado de uma SQL consulta que seu código grava no Amazon S3.

O pré-assinado URL é válido por 60 minutos por padrão. Você pode alterar o tempo de expiração ao especificar um número de segundos para o sinalizador --expires-in. Por exemplo, --expires-in 1800 cria um URL que é válido por 30 minutos.

O exemplo apresentado a seguir gera um link de download para um objeto ao especificar o caminho completo do Amazon S3: s3://EXAMPLE-DOC-BUCKET/path/to/my/object.

%generate_s3_download_url s3://EXAMPLE-DOC-BUCKET/path/to/my/object

Para saber mais sobre como usar generate_s3_download_url, execute o comando a seguir para exibir o texto de ajuda.

%generate_s3_download_url?

Execução de um caderno no modo descentralizado com %execute_notebook

Com a magic do %execute_notebook, você pode executar outro caderno no modo descentralizado e visualizar a saída de cada célula executada. Isso magic requer permissões adicionais para a função de instância que a Amazon EMR e a Amazon EC2 compartilham. Para obter mais detalhes sobre como conceder permissões adicionais, execute o comando %execute_notebook?.

Durante um trabalho de execução prolongada, seu sistema pode entrar em repouso devido à inatividade ou pode perder temporariamente a conectividade com a Internet. Isso pode interromper a conexão entre o seu navegador e o servidor Jupyter. Nesse caso, você poderá perder a saída das células que executou e enviou usando o servidor Jupyter.

Se você executar o notebook no modo headless com %execute_notebookmagic, o EMR Notebooks capturará a saída das células que foram executadas, mesmo que a rede local sofra interrupções. EMRO Notebooks salva a saída de forma incremental em um novo notebook com o mesmo nome do notebook que você executou. EMREm seguida, os cadernos colocam o caderno em uma nova pasta dentro do espaço de trabalho. As execuções descentralizadas ocorrem no mesmo cluster e usam o perfil de serviço EMR_Notebook_DefaultRole, mas argumentos adicionais podem alterar os valores padrão.

Para executar um caderno no modo descentralizado, use o seguinte comando:

%execute_notebook <relative-file-path>

Para especificar um ID de cluster e um perfil de serviço para uma execução descentralizada, use o seguinte comando:

%execute_notebook <notebook_name>.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>

Quando a Amazon EMR e a Amazon EC2 compartilham uma função de instância, a função exige as seguintes permissões adicionais:

{ "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 usar a magic do %execute_notebook, instale a versão 0.2.3 ou superior do pacote emr-notebooks-magics.