将多语言笔记本与 Spark 内核配合使用 - Amazon EMR

将多语言笔记本与 Spark 内核配合使用

每个 Jupyter notebook 内核都有默认语言。例如,Spark 内核的默认语言是 Scala,而 PySpark 内核的默认语言是 Python。借助 Amazon EMR 6.4.0 及更高版本,EMR Studio 支持多语言笔记本电脑。这意味着除了默认语言 Python、Spark、R 和 Spark SQL 之外,EMR Studio 中的每个内核都可以支持以下语言。

要激活此功能,请在任何单元格的开头指定以下一种 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

使用临时表格在多个语言解释器之间共享数据

您还可以使用临时表格在语言解释器之间共享数据。以下示例通过单元格的 %%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)