

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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`<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)
```