

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Usare notebook multilingue con i kernel Spark
<a name="emr-multi-language-kernels"></a>

Ogni kernel notebook di Jupyter ha un linguaggio di default. Ad esempio, il linguaggio predefinito del kernel Spark è Scala e il linguaggio predefinito del PySpark kernel è Python. Con Amazon EMR 6.4.0 e versioni successive, EMR Studio supporta notebook multilingue. Ciò significa che ogni kernel di EMR Studio può supportare le seguenti linguaggi oltre al linguaggio di default: Python, Spark, R e Spark SQL.

Per attivare questa funzionalità, specificare uno dei seguenti comandi magic all'inizio di qualsiasi cella.


****  

| Lingua | Comando | 
| --- | --- | 
| Python | `%%pyspark` | 
| Scala | `%%scalaspark` | 
| R | `%%rspark` Non è supportato per i carichi di lavoro interattivi con EMR Serverless. | 
| Spark SQL | `%%sql` | 

Quando vengono invocati, questi comandi eseguono l'intera cella all'interno della stessa sessione Spark utilizzando l'interprete del linguaggio corrispondente.

La `%%pyspark` cella magic consente agli utenti di scrivere PySpark codice in tutti i kernel Spark.

```
%%pyspark
a = 1
```

La cella `%%sql` magic consente agli utenti di eseguire codice Spark-SQL in tutti i kernel Spark.

```
%%sql
SHOW TABLES
```

La cella `%%rspark` magic consente agli utenti di eseguire codice SparkR in tutti i kernel Spark.

```
%%rspark
a <- 1
```

La cella `%%scalaspark` magic consente agli utenti di eseguire il codice Spark Scala in tutti i kernel Spark.

```
%%scalaspark
val a = 1
```

## Condividere i dati tra interpreti del linguaggio utilizzando tabelle temporanee
<a name="emr-temp-tables"></a>

È inoltre possibile condividere dati tra interpreti del linguaggio utilizzando tabelle temporanee. Nell'esempio seguente viene utilizzato `%%pyspark` in una cella per creare una tabella temporanea in Python e utilizza `%%scalaspark` nella cella seguente per leggere i dati di quella tabella in Scala.

```
%%pyspark
df=spark.sql("SELECT * from nyc_top_trips_report LIMIT 20")
# create a temporary table called nyc_top_trips_report_view in python
df.createOrReplaceTempView("nyc_top_trips_report_view")
```

```
%%scalaspark
// read the temp table in scala
val df=spark.sql("SELECT * from nyc_top_trips_report_view")
df.show(5)
```