

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Spark カーネルで多言語ノートブックを使用する
<a name="emr-multi-language-kernels"></a>

Jupyter Notebook カーネルにはそれぞれデフォルト言語があります。例えば、Spark カーネルのデフォルト言語は Scala で、PySpark カーネルのデフォルト言語は Python です。Amazon EMR 6.4.0 以降では、EMR Studio は多言語ノートブックをサポートしています。つまり、EMR Studio の各カーネルは、デフォルト言語に加えて、Python、Spark、R、および Spark SQL の各言語をサポートできます。

この機能を有効にするには、セルの先頭に次のいずれかの magic コマンドを指定します。


****  

| 言語 | コマンド | 
| --- | --- | 
| Python | `%%pyspark` | 
| Scala | `%%scalaspark` | 
| R | `%%rspark` 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>

一時テーブルを使用して、言語インタプリタ間でデータを共有することもできます。次の例では、1 つのセルで `%%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)
```