

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 Spark 核心使用多語言筆記本
<a name="emr-multi-language-kernels"></a>

每個 Jupyter 筆記本核心都有一個預設語言。例如，Spark 核心的預設語言是 Scala，而 PySpark 核心的預設語言是 Python。透過 Amazon EMR 6.4.0 及更新版本，EMR Studio 支援多語言筆記本。這意味著 EMR Studio 中的每個核心可以支援除預設語言之外的以下語言：Python、Spark、R 和 Spark SQL。

若要啟動此功能，請在任何儲存格的開頭指定下列 magic 命令之一。


****  

| Language | 命令 | 
| --- | --- | 
| Python | `%%pyspark` | 
| Scala | `%%scalaspark` | 
| R | `%%rspark`<br />EMR Serverless 不支援互動式工作負載。 | 
| Spark SQL | `%%sql` | 

當調用時，這些命令使用相應語言的解譯器在同一 Spark 工作階段中執行整個儲存格。

`%%pyspark` 儲存格 magic 允許使用者在所有 Spark 核心中撰寫 PySpark 程式碼。

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

`%%sql` 儲存格 magic 允許使用者在所有 Spark 核心中執行 Spark-SQL 程式碼。

```
%%sql
SHOW TABLES
```

`%%rspark` 儲存格 magic 允許使用者在所有 Spark 核心中執行 SparkR 程式碼。

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

`%%scalaspark` 儲存格 magic 允許使用者在所有 Spark 核心中執行 Spark Scala 程式碼。

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

## 使用暫時資料表共用語言解譯器的資料
<a name="emr-temp-tables"></a>

您也可以使用暫時資料表在語言解釋器之間共用資料。下面的範例在一個儲存格中使用 `%%pyspark`，以便在 Python 中建立暫時資料表，並在下面的儲存格中使用 `%%scalaspark`，以便從 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)
```