

# Usar o editor de cadernos do Athena
<a name="notebooks-spark-editor"></a>

**nota**  
O editor do caderno do Athena é compatível com a versão 3 do mecanismo Pyspark. Para usar cadernos com a versão 3.5 do Apache Spark, consulte [Cadernos do SageMaker](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/what-is-sagemaker-unified-studio.html).

Você gerencia seus cadernos no explorador de cadernos do Athena e os edita e executa em sessões usando o editor de cadernos do Athena. É possível configurar o uso da DPU para suas sessões de cadernos de acordo com seus requisitos.

Ao interromper um caderno, você encerra a sessão associada. Todos os arquivos serão salvos, mas as alterações em andamento nas variáveis, funções e classes declaradas serão perdidas. Quando você reinicia o caderno, o Athena recarrega os arquivos do caderno e você pode executar o código novamente.

O editor de cadernos do Athena é um ambiente interativo para gravar e executar códigos. As seções a seguir descrevem os recursos do ambiente.

## Entender as sessões e os cálculos de cadernos
<a name="notebooks-spark-sessions-and-calculations"></a>

Cada caderno está associado a um único kernel do Python e executa o código Python. Um caderno pode ter uma ou mais células que contêm comandos. Para executar as células em um caderno, primeiro crie uma sessão para ele. As sessões acompanham as variáveis ​​e o estado dos cadernos. 

Executar uma célula em um caderno significa executar um cálculo na sessão atual. Os cálculos avançam no estado do caderno e podem executar tarefas como leitura do Amazon S3 ou gravação para outros armazenamentos de dados. Enquanto uma sessão estiver em execução, os cálculos usam e modificam o estado que é mantido para o caderno.

Quando você não precisar mais do estado, poderá encerrar uma sessão. Ao encerrar uma sessão, o caderno permanecerá, mas as variáveis e outras informações de estado serão destruídas. Se você precisar trabalhar em diversos projetos ao mesmo tempo, poderá criar uma sessão para cada projeto, e as sessões serão independentes umas das outras.

As sessões têm capacidade de computação dedicada, que é medida em DPU. Ao criar uma sessão, é possível atribuir à sessão um número de DPUs. Sessões diferentes podem ter capacidades diferentes, dependendo dos requisitos para a tarefa.

## Alternar entre o modo de comando e o modo de edição
<a name="notebooks-spark-command-mode-vs-edit-mode"></a>

O editor de cadernos tem uma interface de usuário modal: um modo de edição para inserir texto em uma célula e um modo de comando para emitir comandos para o próprio editor, como copiar, colar ou executar.

Para usar o modo de edição e o modo de comando, você pode executar as tarefas a seguir:
+ Para entrar no modo de edição, pressione **ENTER** ou selecione uma célula. Quando uma célula está no modo de edição, ela tem uma margem esquerda na cor verde.
+ Para entrar no modo de comando, pressione **ESC** ou clique na parte exterior de uma célula. Observe que os comandos geralmente se aplicam somente à célula selecionada no momento, não a todas as células. Quando o editor está no modo de comando, a célula tem uma margem esquerda na cor azul.
+ No modo de comando, é possível usar atalhos de teclado e o menu acima do editor, mas não é possível inserir texto em células individuais.
+ Para selecionar uma célula, escolha a célula.
+ Para selecionar todas as células, pressione **Ctrl\$1A** (Windows) ou **Cmd\$1A** (Mac).

## Usar ações no menu do editor de cadernos
<a name="notebooks-spark-notebook-editor-menu"></a>

Os ícones no menu presente na parte superior do editor de cadernos oferecem as seguintes opções:
+ **Salvar**: salva o estado atual do caderno.
+ **Inserir célula abaixo**: adiciona uma nova célula (vazia) abaixo da célula selecionada no momento.
+ **Recortar células selecionadas**: remove a célula selecionada de sua localização atual e copia a célula para a memória.
+ **Copiar células selecionadas**: copia a célula selecionada para a memória.
+ **Colar células abaixo**: cola a célula copiada abaixo da célula atual.
+ **Mover as células selecionadas para cima**: move a célula atual acima da célula que está na posição acima.
+ **Mover as células selecionadas para baixo**: move a célula atual abaixo da célula que está na posição abaixo.
+ **Executar**: executa a célula atual (selecionada). A saída é exibida logo abaixo da célula atual.
+ **Executar tudo**: executa todas as células presentes no caderno. A saída para cada célula é exibida logo abaixo das respectivas células.
+ **Parar (interromper o kernel)**: interrompe o caderno atual ao interromper o kernel.
+ **Opção de formato**: seleciona o formato da célula, que pode ser um dos seguintes:
  + **Código**: use para códigos do Python (padrão).
  + **Markdown**: use para inserir texto no formato [markdown estilo GitHub](https://docs.github.com/en/get-started/writing-on-github). Para renderizar o markdown, realize a execução da célula.
  + **Raw NBConvert**: use para inserir texto em um formato não modificado. As células marcadas como **Raw NBConvert** podem ser convertidas em um formato diferente, como HTML, pela ferramenta de linha de comando [nbconvert](https://nbconvert.readthedocs.io/en/latest/usage.html) do Jupyter.
+ **Cabeçalho**: use para alterar o nível do cabeçalho da célula.
+ **Paleta de comandos**: contém comandos do caderno Jupyter e seus atalhos de teclado. Para obter mais informações sobre os atalhos de teclado, consulte as seções posteriores neste documento.
+ **Sessão**: use as opções desse menu para [visualizar](notebooks-spark-getting-started.md#notebooks-spark-getting-started-viewing-session-and-calculation-details) os detalhes de uma sessão, [editar os parâmetros da sessão](notebooks-spark-getting-started.md#notebooks-spark-getting-started-editing-session-details) ou [encerrá-la](notebooks-spark-getting-started.md#notebooks-spark-getting-started-terminating-a-session). 

## Usar os atalhos de teclado do modo de comando para aumentar a produtividade
<a name="notebooks-spark-command-mode-keyboard-shortcuts"></a>

A seguir estão alguns atalhos de teclado conhecidos do modo de comando do editor de cadernos. Esses atalhos estão disponíveis após pressionar **ESC** para entrar no modo de comando. Para visualizar uma lista completa de comandos disponíveis no editor, pressione **ESC \$1 H**.


****  

| Chave | Ação | 
| --- | --- | 
| 1 - 6 | Alterar o tipo de célula para markdown e definir o nível do cabeçalho para o número digitado | 
| a | Criar uma célula acima da célula atual | 
| b | Criar uma célula abaixo da célula atual | 
| c | Copiar a célula atual para a memória | 
| d d | Excluir a célula atual | 
| h | Exibir a tela de ajuda para os atalhos de teclado | 
| j | Ir uma célula abaixo | 
| k | Ir uma célula acima | 
| m | Alterar o formato atual da célula para markdown | 
| r | Alterar o formato atual da célula para raw | 
| s | Salvar o caderno | 
| v | Colar o conteúdo da memória na célula atual | 
| x | Recortar a célula ou as células selecionadas | 
| y | Alterar o formato da célula para código | 
| z | Desfazer | 
| Ctrl\$1Enter  | Executar a célula atual e entrar no modo de comando | 
| Shift\$1Enter ou Alt\$1Enter | Executar a célula atual e criar uma nova célula abaixo da saída, além de inserir a nova célula no modo de edição | 
| Space | Uma página abaixo | 
| Shift\$1Space | Uma página acima | 
| Shift \$1 L | Alternar a visibilidade dos números de linha nas células | 

## Personalizar os atalhos do modo de comando
<a name="notebooks-spark-editing-command-mode-shortcuts"></a>

O editor de cadernos tem a opção para personalizar os atalhos de teclado do modo de comando.

**Para editar atalhos do modo de comando**

1. No menu do editor de cadernos, escolha a **Command palette** (Paleta de comandos).

1. Na paleta de comandos, escolha o comando **Edit command mode keyboard shortcuts** (Editar atalhos de teclado do modo de comando).

1. Use a interface **Edit command mode shortcuts** (Editar atalhos do modo de comando) para mapear ou mapear novamente os comandos que você deseja para o teclado.

   Para visualizar as instruções para edição dos atalhos do modo de comando, role até a parte inferior da tela do **Edit command mode shortcuts** (Editar atalhos do modo de comando).

Para obter informações sobre como usar comandos magic no Athena para Apache Spark, consulte [Usar comandos mágicos](notebooks-spark-magics.md).

**Topics**
+ [Entender as sessões e os cálculos de cadernos](#notebooks-spark-sessions-and-calculations)
+ [Alternar entre o modo de comando e o modo de edição](#notebooks-spark-command-mode-vs-edit-mode)
+ [Usar ações no menu do editor de cadernos](#notebooks-spark-notebook-editor-menu)
+ [Usar os atalhos de teclado do modo de comando para aumentar a produtividade](#notebooks-spark-command-mode-keyboard-shortcuts)
+ [Personalizar os atalhos do modo de comando](#notebooks-spark-editing-command-mode-shortcuts)
+ [Usar comandos mágicos](notebooks-spark-magics.md)

# Usar comandos mágicos
<a name="notebooks-spark-magics"></a>

Comandos mágicos, ou mágicas, correspondem a comandos especiais que você pode executar em uma célula do caderno. Por exemplo, `%env` apresenta as variáveis de ambiente em uma sessão do caderno. O Athena oferece suporte para as funções mágicas no IPython 6.0.3. 

Esta seção apresenta alguns dos principais comandos magic no Athena para Apache Spark.
+  Para visualizar uma lista de comandos magic no Athena, execute o comando **%lsmagic** em uma célula de caderno. 
+ Para obter informações sobre como usar magic para criar grafos em cadernos do Athena, consulte [Usar mágica para criar gráficos de dados](notebooks-spark-magics-graphs.md).
+ Para obter informações sobre outros comandos magic, consulte [Comandos magic integrados](https://ipython.readthedocs.io/en/stable/interactive/magics.html) na documentação do IPython.

**nota**  
Atualmente, o comando `%pip` apresenta falhas quando é executado. Esse é um problema conhecido. 

**Topics**
+ [Magics de células](notebooks-spark-magics-cell-magics.md)
+ [Magics de linha](notebooks-spark-magics-line-magics.md)
+ [Magics de grafos](notebooks-spark-magics-graphs.md)

# Usar mágica de célula
<a name="notebooks-spark-magics-cell-magics"></a>

Mágicas que são gravadas em diversas linhas são precedidas por um sinal de porcentagem duplo (`%%`) e são chamadas de funções mágicas de células ou mágicas de células.

## %%sql
<a name="notebooks-spark-magics-sql"></a>

O magic de células permite executar instruções SQL diretamente sem precisar decorá-las com a instrução SQL do Spark. O comando também exibe a saída chamando implicitamente `.show()` no quadro de dados retornado.

![\[Usar o %%sql.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-1.png)


O comando `%%sql` trunca automaticamente as saídas da coluna para uma largura de 20 caracteres. Essa definição não é configurável no momento. Para contornar essa limitação, use a sintaxe completa a seguir e modifique os parâmetros do método `show` adequadamente. 

```
spark.sql("""YOUR_SQL""").show(n=number, truncate=number, vertical=bool)
```
+ **n** `int`, opcional. O número de linhas a serem exibidas.
+ **truncar**: `bool` ou `int`, opcional. Se `true`, trunca strings com mais de 20 caracteres. Quando definido como um número maior que 1, trunca strings de caracteres longas até o comprimento especificado e alinha as células à direita.
+ **vertical**: `bool`, opcional. Se `true`, imprime as linhas de saída verticalmente (uma linha por valor de coluna).

# Usar mágica de linha
<a name="notebooks-spark-magics-line-magics"></a>

Mágicas que estão em uma única linha são precedidas por um sinal de porcentagem (`%`) e são chamadas de funções mágicas de linha ou mágicas de linha.

## %help
<a name="notebooks-spark-magics-help"></a>

Exibe descrições dos comandos magic disponíveis.

![\[Usar o %help.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-2.png)


## %list\$1sessions
<a name="notebooks-spark-magics-list_sessions"></a>

Lista as sessões associadas ao caderno. As informações de cada sessão incluem o ID da sessão, o status da sessão e a data e hora em que a sessão iniciou e terminou.

![\[Usar o %list_sessions.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-3.png)


## %session\$1id
<a name="notebooks-spark-magics-session_id"></a>

Recupera o ID da sessão atual.

![\[Usar o session_id.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-4.png)


## %set\$1log\$1level
<a name="notebooks-spark-magics-set_log_level"></a>

Define ou redefine o logger para usar o nível de log especificado. Os valores possíveis são `DEBUG`, `ERROR`, `FATAL`,`INFO` e `WARN` ou `WARNING`. Os valores devem estar em letras maiúsculas e não devem estar delimitados entre aspas simples ou duplas.

![\[Usar o %set_log_level.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-5.png)


## %status
<a name="notebooks-spark-magics-status"></a>

Descreve a sessão atual. A saída inclui o ID da sessão, o estado da sessão, o nome do grupo de trabalho, a versão do mecanismo PySpark e a hora de início da sessão. Esse comando magic requer uma sessão ativa para recuperar os detalhes da sessão.

Os seguintes valores de status são possíveis:

**CREATING**: a sessão está sendo iniciada, incluindo a aquisição de recursos.

**CREATED**: a sessão foi iniciada.

**IDLE**: a sessão pode aceitar um cálculo.

**BUSY**: a sessão está processando outra tarefa e não pode aceitar um cálculo.

**TERMINATING**: a sessão está no processo de desligamento.

**TERMINATED**: a sessão e os respectivos recursos não estão mais em execução.

**DEGRADED**: a sessão não tem coordenadores íntegros.

**FAILED**: devido a uma falha, a sessão e os respectivos recursos não estão mais em execução.

![\[Usar o %status.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-6.png)


# Usar mágica para criar gráficos de dados
<a name="notebooks-spark-magics-graphs"></a>

Os magics de linha desta seção são especializados em renderizar dados para tipos específicos de dados ou em conjunto com bibliotecas de grafos.

## %table
<a name="notebooks-spark-magics-graphs-table"></a>

Use o comando magic `%table` para exibir dados do quadro de dados em formato de tabela.

O exemplo a seguir cria um quadro de dados com duas colunas e três linhas de dados e exibe os dados em formato de tabela.

![\[Usar o comando magic %table.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-graphs-1.png)


## %matplot
<a name="notebooks-spark-magics-graphs-matplot"></a>

[Matplotlib](https://matplotlib.org/) é uma biblioteca completa para criar visualizações estáticas, animadas e interativas em Python. Você pode usar o comando magic `%matplot` para criar um grafo depois de importar a biblioteca matplotlib para uma célula do caderno.

O exemplo a seguir importa a biblioteca matplotlib, cria um conjunto de coordenadas x e y e usa o comando magic `%matplot` para criar um grafo dos pontos.

```
import matplotlib.pyplot as plt 
x=[3,4,5,6,7,8,9,10,11,12] 
y= [9,16,25,36,49,64,81,100,121,144] 
plt.plot(x,y) 
%matplot plt
```

![\[Usar o comando magic %matplot.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-graphs-2.png)


### Usar as bibliotecas matplotlib e seaborn juntas
<a name="notebooks-spark-magics-graphs-using-the-matplotlib-and-seaborn-libraries-together"></a>

[Seaborn](https://seaborn.pydata.org/tutorial/introduction) é uma biblioteca para criação de gráficos estatísticos em Python. Baseia-se no matplotlib e integra-se estreitamente às estruturas de dados [pandas](https://pandas.pydata.org/) (análise de dados Python). Também é possível usar o comando magic `%matplot` para renderizar dados seaborn.

O exemplo a seguir usa as bibliotecas matplotlib e seaborn para criar um grafo de barras simples.

```
import matplotlib.pyplot as plt 
import seaborn as sns 

x = ['A', 'B', 'C'] 
y = [1, 5, 3] 

sns.barplot(x, y) 
%matplot plt
```

![\[Usar %matplot para renderizar dados seaborn.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-graphs-3.png)


## %plotly
<a name="notebooks-spark-magics-graphs-plotly"></a>

[Plotly](https://plotly.com/python/) é uma biblioteca de grafos de código aberto para Python que você pode usar para criar grafos interativos. Use o comando magic `%ploty` para renderizar dados ploty.

O exemplo a seguir usa as bibliotecas [StringIO](https://docs.python.org/3.13/library/io.html#io.StringIO), plotly e pandas em dados de preços de ações para criar um grafo da atividade de ações de fevereiro e março de 2015.

```
from io import StringIO 
csvString = """ 
Date,AAPL.Open,AAPL.High,AAPL.Low,AAPL.Close,AAPL.Volume,AAPL.Adjusted,dn,mavg,up,direction 
2015-02-17,127.489998,128.880005,126.919998,127.830002,63152400,122.905254,106.7410523,117.9276669,129.1142814,Increasing 
2015-02-18,127.629997,128.779999,127.449997,128.720001,44891700,123.760965,107.842423,118.9403335,130.0382439,Increasing 
2015-02-19,128.479996,129.029999,128.330002,128.449997,37362400,123.501363,108.8942449,119.8891668,130.8840887,Decreasing 
2015-02-20,128.619995,129.5,128.050003,129.5,48948400,124.510914,109.7854494,120.7635001,131.7415509,Increasing 
2015-02-23,130.020004,133,129.660004,133,70974100,127.876074,110.3725162,121.7201668,133.0678174,Increasing 
2015-02-24,132.940002,133.600006,131.169998,132.169998,69228100,127.078049,111.0948689,122.6648335,134.2347981,Decreasing 
2015-02-25,131.559998,131.600006,128.149994,128.789993,74711700,123.828261,113.2119183,123.6296667,134.0474151,Decreasing 
2015-02-26,128.789993,130.869995,126.610001,130.419998,91287500,125.395469,114.1652991,124.2823333,134.3993674,Increasing 
2015-02-27,130,130.570007,128.240005,128.460007,62014800,123.510987,114.9668484,124.8426669,134.7184854,Decreasing 
2015-03-02,129.25,130.279999,128.300003,129.089996,48096700,124.116706,115.8770904,125.4036668,134.9302432,Decreasing 
2015-03-03,128.960007,129.520004,128.089996,129.360001,37816300,124.376308,116.9535132,125.9551669,134.9568205,Increasing 
2015-03-04,129.100006,129.559998,128.320007,128.539993,31666300,123.587892,118.0874253,126.4730002,134.8585751,Decreasing 
2015-03-05,128.580002,128.75,125.760002,126.410004,56517100,121.539962,119.1048311,126.848667,134.5925029,Decreasing 
2015-03-06,128.399994,129.369995,126.260002,126.599998,72842100,121.722637,120.190797,127.2288335,134.26687,Decreasing 
2015-03-09,127.959999,129.570007,125.059998,127.139999,88528500,122.241834,121.6289771,127.631167,133.6333568,Decreasing 
2015-03-10,126.410004,127.220001,123.800003,124.510002,68856600,119.71316,123.1164763,127.9235004,132.7305246,Decreasing 
""" 
csvStringIO = StringIO(csvString) 
 
from io import StringIO 
import plotly.graph_objects as go 
import pandas as pd 
from datetime import datetime 
df = pd.read_csv(csvStringIO) 
fig = go.Figure(data=[go.Candlestick(x=df['Date'], 
open=df['AAPL.Open'], 
high=df['AAPL.High'], 
low=df['AAPL.Low'], 
close=df['AAPL.Close'])]) 
%plotly fig
```

![\[Usar o comando magic %ploty.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/notebooks-spark-magics-graphs-4.png)
