Usare notebook multilingue con i kernel Spark - Amazon EMR

Usare notebook multilingue con i kernel Spark

Ogni kernel notebook di Jupyter ha un linguaggio di default. Ad esempio, il linguaggio di default del kernel Spark è Scala e il linguaggio di default del kernel PySpark è Python. Con Amazon EMR 6.4.0 e versioni successive, EMR Studio supporta notebook multilingue. Ciò significa che ogni kernel di EMR Studio può supportare le seguenti linguaggi oltre al linguaggio di default: Python, Spark, R e Spark SQL.

Per attivare questa funzionalità, specificare uno dei seguenti comandi magic all'inizio di qualsiasi cella.

Linguaggio Comando
Python

%%pyspark

Scala

%%scalaspark

R

%%rspark

Non è supportato per i carichi di lavoro interattivi con EMR Serverless.

Spark SQL

%%sql

Quando vengono invocati, questi comandi eseguono l'intera cella all'interno della stessa sessione Spark utilizzando l'interprete del linguaggio corrispondente.

La cella %%pyspark magic consente agli utenti di scrivere codice PySpark in tutti i kernel Spark.

%%pyspark a = 1

La cella %%sql magic consente agli utenti di eseguire codice Spark-SQL in tutti i kernel Spark.

%%sql SHOW TABLES

La cella %%rspark magic consente agli utenti di eseguire codice SparkR in tutti i kernel Spark.

%%rspark a <- 1

La cella %%scalaspark magic consente agli utenti di eseguire il codice Spark Scala in tutti i kernel Spark.

%%scalaspark val a = 1

Condividere i dati tra interpreti del linguaggio utilizzando tabelle temporanee

È inoltre possibile condividere dati tra interpreti del linguaggio utilizzando tabelle temporanee. Nell'esempio seguente viene utilizzato %%pyspark in una cella per creare una tabella temporanea in Python e utilizza %%scalaspark nella cella seguente per leggere i dati di quella tabella in 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)