本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 Spark 核心使用多語言筆記本
每個 Jupyter 筆記本核心都有一個預設語言。例如,Spark 核心的預設語言為 Scala,而 PySpark 核心的預設語言為 Python。Amazon EMR 6.4EMR.0 及更新版本支援多語言筆記本。這表示 EMR Studio 中的每個核心除了預設語言之外,還可以支援下列語言:Python、Spark、R 和 SparkSQL。
若要啟用此功能,請指定下列其中一項 magic 命令。
語言 | Command |
---|---|
Python |
|
Scala |
|
R |
不支援使用 EMR Serverless 的互動式工作負載。 |
Spark 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)