Show Menu
ARGOMENTI×

Guide per la migrazione a componenti e notebook

I notebook e le ricette che utilizzano Python/R rimangono invariati. La migrazione si applica solo alle ricette e ai notebook PySpark/Spark (2.3).
Le guide seguenti descrivono i passaggi e le informazioni necessari per migrare ricette e blocchi appunti esistenti.

Spark guida alla migrazione

L'artefatto della ricetta generato dai passaggi di creazione è ora un'immagine Docker che contiene il file binario .jar. Inoltre, la sintassi utilizzata per leggere e scrivere i set di dati con l' Platform SDK è cambiata e richiede di modificare il codice di ricetta.
Il seguente video è stato creato per agevolare la comprensione delle modifiche necessarie per Spark le ricette:

Set di dati di lettura e scrittura (Spark)

Prima di creare l'immagine Docker, controlla gli esempi per la lettura e la scrittura di set di dati nell' Platform SDK, forniti nelle sezioni seguenti. Se stai convertendo ricette esistenti, il codice Platform SDK deve essere aggiornato.

Lettura di un dataset

Questa sezione illustra le modifiche necessarie per la lettura di un set di dati e utilizza l’esempio helper.scala fornito da Adobe.
Vecchio modo di leggere un dataset
 var df = sparkSession.read.format("com.adobe.platform.dataset")
    .option(DataSetOptions.orgId, orgId)
    .option(DataSetOptions.serviceToken, serviceToken)
    .option(DataSetOptions.userToken, userToken)
    .option(DataSetOptions.serviceApiKey, apiKey)
    .load(dataSetId)

Nuovo metodo di lettura di un dataset
Con gli aggiornamenti alle Spark ricette, è necessario aggiungere e modificare una serie di valori. Innanzitutto, DataSetOptions non viene più utilizzato. Replace DataSetOptions with QSOption . Inoltre, sono necessari nuovi option parametri. Sia QSOption.mode che QSOption.datasetId sono necessari. Infine, orgId e serviceApiKey devono essere modificati in imsOrg e apiKey . Per un confronto tra i set di dati di lettura, consultare l'esempio seguente:
import com.adobe.platform.query.QSOption
var df = sparkSession.read.format("com.adobe.platform.query")
  .option(QSOption.userToken", {userToken})
  .option(QSOption.serviceToken, {serviceToken})
  .option(QSOption.imsOrg, {orgId})
  .option(QSOption.apiKey, {apiKey})
  .option(QSOption.mode, "interactive")
  .option(QSOption.datasetId, {dataSetId})
  .load()

La modalità interattiva si interrompe se le query sono in esecuzione per più di 10 minuti. Se state acquisendo più di alcuni gigabyte di dati, si consiglia di passare alla modalità "batch". La modalità batch richiede più tempo per l'avvio ma può gestire set di dati più grandi.

Scrivere in un dataset

Questa sezione illustra le modifiche necessarie per scrivere un dataset utilizzando l’esempio ScoringDataSaver.scala fornito da Adobe.
Vecchio modo di scrivere un dataset
df.write.format("com.adobe.platform.dataset")
    .option(DataSetOptions.orgId, orgId)
    .option(DataSetOptions.serviceToken, serviceToken)
    .option(DataSetOptions.userToken, userToken)
    .option(DataSetOptions.serviceApiKey, apiKey)
    .save(scoringResultsDataSetId)

Nuovo modo di scrivere un dataset
Con gli aggiornamenti alle Spark ricette, è necessario aggiungere e modificare una serie di valori. Innanzitutto, DataSetOptions non viene più utilizzato. Replace DataSetOptions with QSOption . Inoltre, sono necessari nuovi option parametri. QSOption.datasetId è necessario e sostituisce la necessità di caricare il {dataSetId} contenuto .save() . Infine, orgId e serviceApiKey devono essere modificati in imsOrg e apiKey . Esaminare l'esempio seguente per un confronto sulla scrittura di set di dati:
import com.adobe.platform.query.QSOption
df.write.format("com.adobe.platform.query")
  .option(QSOption.userToken", {userToken})
  .option(QSOption.serviceToken, {serviceToken})
  .option(QSOption.imsOrg, {orgId})
  .option(QSOption.apiKey, {apiKey})
  .option(QSOption.datasetId, {dataSetId})
  .save()

Pacchetto di file sorgente basati su Docker (Spark)

Per iniziare, andate alla directory in cui si trova la ricetta.
Nelle sezioni seguenti viene utilizzata la nuova ricetta di vendita al dettaglio Scala disponibile nell'archivio pubblico di Github di Data Science Workspace.

Scaricate la ricetta di esempio (Spark)

La ricetta di esempio contiene file che devono essere copiati nella ricetta esistente. Per duplicare il Github pubblico che contiene tutte le ricette campione, immettete quanto segue in terminale:
git clone https://github.com/adobe/experience-platform-dsw-reference.git

La ricetta Scala si trova nella seguente directory experience-platform-dsw-reference/recipes/scala/retail .

Aggiungi il file del documento (Spark)

Per utilizzare il flusso di lavoro basato sul docker è necessario un nuovo file nella cartella di ricetta. Copiate e incollate il file Dockerfile dalla cartella delle ricette in experience-platform-dsw-reference/recipes/scala/Dockerfile . Facoltativamente, potete anche copiare e incollare il codice riportato di seguito in un nuovo file denominato Dockerfile .
Il file JAR di esempio riportato di seguito ml-retail-sample-spark-*-jar-with-dependencies.jar deve essere sostituito con il nome del file JAR della ricetta.
FROM adobe/acp-dsw-ml-runtime-spark:0.0.1

COPY target/ml-retail-sample-spark-*-jar-with-dependencies.jar /application.jar

Modifica dipendenze (Spark)

Se utilizzate una ricetta esistente, per le dipendenze sono necessarie modifiche nel file pom.xml. Cambia in 2.0.0 la versione della dipendenza model-authoring-sdk. Quindi, aggiornate la Spark versione nel file pom a 2.4.3 e la versione Scala a a 2.11.12.
<groupId>com.adobe.platform.ml</groupId>
<artifactId>authoring-sdk_2.11</artifactId>
<version>2.0.0</version>
<classifier>jar-with-dependencies</classifier>

Preparare gli script Docker (Spark)

Spark le ricette non utilizzano più gli artefatti binari e richiedono invece la creazione di un'immagine Docker. Se non lo avete fatto, scaricate e installate Docker .
Nella ricetta di esempio Scala fornita, è possibile trovare gli script login.sh e build.sh individuare in experience-platform-dsw-reference/recipes/scala/ . Copiate e incollate questi file nella ricetta esistente.
La struttura delle cartelle deve ora essere simile al seguente esempio (i file aggiunti di recente sono evidenziati):
Il passaggio successivo consiste nel seguire i file sorgente del pacchetto in un'esercitazione sulle ricette . Questa esercitazione include una sezione che descrive come creare un'immagine docker per una ricetta Scala (Spark). Al termine, viene fornita l'immagine Docker in un Registro di sistema del contenitore di Azure con l'URL immagine corrispondente.

Creare una ricetta (Spark)

Per creare una ricetta, dovete prima completare l'esercitazione sui file sorgente del pacchetto e avere l'URL dell'immagine docker pronto. Potete creare una ricetta con l'interfaccia utente o l'API.
Per creare la ricetta utilizzando l'interfaccia utente, seguite l'esercitazione Importa una ricetta (interfaccia) in pacchetti per Scala.
Per creare la ricetta utilizzando l'API, seguite l'esercitazione API ( Import a packages recipe) (API) per Scala.

Guida alla migrazione a PySpark

L'artefatto della ricetta generato dai passaggi di creazione è ora un'immagine Docker che contiene il file binario .egg. Inoltre, la sintassi utilizzata per leggere e scrivere i set di dati con l' Platform SDK è cambiata e richiede di modificare il codice di ricetta.
Il seguente video è stato creato per agevolare la comprensione delle modifiche necessarie per le ricette PySpark:

Set di dati di lettura e scrittura (PySpark)

Prima di creare l'immagine Docker, controlla gli esempi per la lettura e la scrittura di set di dati nell' Platform SDK, forniti nelle sezioni seguenti. Se stai convertendo ricette esistenti, il codice Platform SDK deve essere aggiornato.

Lettura di un dataset

In questa sezione sono illustrate le modifiche necessarie per la lettura di un dataset utilizzando l'esempio helper.py , fornito da Adobe.
Vecchio modo di leggere un dataset
dataset_options = get_dataset_options(spark.sparkContext)
pd = spark.read.format("com.adobe.platform.dataset") 
  .option(dataset_options.serviceToken(), service_token) 
  .option(dataset_options.userToken(), user_token) 
  .option(dataset_options.orgId(), org_id) 
  .option(dataset_options.serviceApiKey(), api_key)
  .load(dataset_id)

Nuovo metodo di lettura di un dataset
Con gli aggiornamenti alle Spark ricette, è necessario aggiungere e modificare una serie di valori. Innanzitutto, DataSetOptions non viene più utilizzato. Replace DataSetOptions with qs_option . Inoltre, sono necessari nuovi option parametri. Sia qs_option.mode che qs_option.datasetId sono necessari. Infine, orgId e serviceApiKey devono essere modificati in imsOrg e apiKey . Per un confronto tra i set di dati di lettura, consultare l'esempio seguente:
qs_option = spark_context._jvm.com.adobe.platform.query.QSOption
pd = sparkSession.read.format("com.adobe.platform.query") 
  .option(qs_option.userToken, {userToken}) 
  .option(qs_option.serviceToken, {serviceToken}) 
  .option(qs_option.imsOrg, {orgId}) 
  .option(qs_option.apiKey, {apiKey}) 
  .option(qs_option.mode, "interactive") 
  .option(qs_option.datasetId, {dataSetId}) 
  .load()

La modalità interattiva si interrompe se le query sono in esecuzione per più di 10 minuti. Se state acquisendo più di alcuni gigabyte di dati, si consiglia di passare alla modalità "batch". La modalità batch richiede più tempo per l'avvio ma può gestire set di dati più grandi.

Scrivere in un dataset

In questa sezione sono illustrate le modifiche necessarie per la scrittura di un dataset utilizzando l'esempio data_saver.py , fornito da Adobe.
Vecchio modo di scrivere un dataset
df.write.format("com.adobe.platform.dataset")
  .option(DataSetOptions.orgId, orgId)
  .option(DataSetOptions.serviceToken, serviceToken)
  .option(DataSetOptions.userToken, userToken)
  .option(DataSetOptions.serviceApiKey, apiKey)
  .save(scoringResultsDataSetId)

Nuovo modo di scrivere un dataset
Con gli aggiornamenti alle ricette PySpark, è necessario aggiungere e modificare una serie di valori. Innanzitutto, DataSetOptions non viene più utilizzato. Replace DataSetOptions with qs_option . Inoltre, sono necessari nuovi option parametri. qs_option.datasetId è necessario e sostituisce la necessità di caricare il {dataSetId} in .save() . Infine, orgId e serviceApiKey devono essere modificati in imsOrg e apiKey . Per un confronto tra i set di dati di lettura, consultare l'esempio seguente:
qs_option = spark_context._jvm.com.adobe.platform.query.QSOption
scored_df.write.format("com.adobe.platform.query") 
  .option(qs_option.userToken, {userToken}) 
  .option(qs_option.serviceToken, {serviceToken}) 
  .option(qs_option.imsOrg, {orgId}) 
  .option(qs_option.apiKey, {apiKey}) 
  .option(qs_option.datasetId, {dataSetId}) 
  .save()

Pacchetto di file sorgente basati su Docker (PySpark)

Per iniziare, andate alla directory in cui si trova la ricetta.
Per questo esempio, la nuova ricetta di vendita al dettaglio PySpark viene utilizzata e si trova nell'archivio pubblico di Github di Data Science Workspace.

Scarica la ricetta di esempio (PySpark)

La ricetta di esempio contiene file che devono essere copiati nella ricetta esistente. Per duplicare il pubblico Github che contiene tutte le ricette di esempio, immettete quanto segue nel terminale.
git clone https://github.com/adobe/experience-platform-dsw-reference.git

La ricetta PySpark si trova nella seguente directory experience-platform-dsw-reference/recipes/pyspark .

Aggiungere il file Dockerfile (PySpark)

Per utilizzare il flusso di lavoro basato sul docker è necessario un nuovo file nella cartella di ricetta. Copiate e incollate il file Dockerfile dalla cartella delle ricette in experience-platform-dsw-reference/recipes/pyspark/Dockerfile . Facoltativamente, potete anche copiare e incollare il codice riportato di seguito e creare un nuovo file denominato Dockerfile .
Il file di uova di esempio riportato di seguito pysparkretailapp-*.egg deve essere sostituito con il nome del file di uova della ricetta.
FROM adobe/acp-dsw-ml-runtime-pyspark:0.0.1
RUN mkdir /recipe

COPY . /recipe

RUN cd /recipe && \
    ${PYTHON} setup.py clean install && \
    rm -rf /recipe

RUN cp /databricks/conda/envs/${DEFAULT_DATABRICKS_ROOT_CONDA_ENV}/lib/python3.6/site-packages/pysparkretailapp-*.egg /application.egg

Preparare gli script Docker (PySpark)

Le ricette PySpark non utilizzano più gli artefatti binari e richiedono invece la creazione di un'immagine Docker. Se non lo avete fatto, scaricate e installate Docker .
Nella ricetta di esempio PySpark fornita, potete trovare gli script login.sh e build.sh trovarli in experience-platform-dsw-reference/recipes/pyspark . Copiate e incollate questi file nella ricetta esistente.
La struttura delle cartelle deve ora essere simile al seguente esempio (i file aggiunti di recente sono evidenziati):
La ricetta è ora pronta per essere creata utilizzando un'immagine Docker. Il passaggio successivo consiste nel seguire i file sorgente del pacchetto in un'esercitazione sulle ricette . Questa esercitazione ha una sezione che descrive come creare un'immagine docker per una ricetta PySpark (Spark 2.4). Al termine, viene fornita l'immagine Docker in un Registro di sistema del contenitore di Azure con l'URL immagine corrispondente.

Creare una ricetta (PySpark)

Per creare una ricetta, dovete prima completare l'esercitazione sui file sorgente del pacchetto e avere l'URL dell'immagine docker pronto. Potete creare una ricetta con l'interfaccia utente o l'API.
Per creare la ricetta utilizzando l'interfaccia utente, seguite l'esercitazione Importa una ricetta (interfaccia) in pacchetti per PySpark.
Per creare la ricetta utilizzando l'API, seguite l'esercitazione API ( import a packages recipe) (API) per PySpark.

Guide alla migrazione dei notebook

Le modifiche recenti apportate ai JupyterLab blocchi appunti richiedono l’aggiornamento dei notebook PySpark e Spark 2.3 esistenti a 2.4. Con questa modifica, JupyterLab Launcher è stato aggiornato con nuovi blocchi appunti iniziali. Per una guida dettagliata su come convertire i notebook, selezionare una delle seguenti guide:
Il seguente video è stato creato per agevolare la comprensione delle modifiche necessarie per JupyterLab Notebooks:

Guida alla migrazione dei notebook PySpark 2.3-2.4

Con l'introduzione di PySpark 2.4 a JupyterLab Notebooks, nuovi Python notebook con PySpark 2.4 ora utilizzano il kernel Python 3 invece del kernel PySpark 3. Ciò significa che il codice esistente in esecuzione su PySpark 2.3 non è supportato in PySpark 2.4.
PySpark 2.3 è obsoleto e deve essere rimosso in una versione successiva. Tutti gli esempi esistenti sono impostati in modo da essere sostituiti con gli esempi PySpark 2.4.
Per convertire i notebook PySpark 3 (Spark 2.3) esistenti in Spark 2.4, seguire gli esempi riportati di seguito:

Kernel

I notebook PySpark 3 (Spark 2.4) utilizzano il kernel Python 3 invece del kernel PySpark obsoleto utilizzato nei notebook PySpark 3 (Spark 2.3 - obsoleto).
Per confermare o modificare il kernel nell' JupyterLab interfaccia utente, selezionare il pulsante del kernel situato nella barra di navigazione in alto a destra del blocco appunti. Se si utilizza uno dei blocchi appunti di avvio predefiniti, il kernel è già selezionato. Nell'esempio riportato di seguito viene utilizzato l'avvio del blocco appuntiSpark Aggregation PySpark 3 ( 2.4).
Selezionando il menu a discesa si apre un elenco dei kernel disponibili.
Per i notebook PySpark 3 (Spark 2.4), selezionate il kernel Python 3 e confermate facendo clic sul pulsante Seleziona .

Inizializzazione di sparkSession

Tutti i notebook Spark 2.4 richiedono l’inizializzazione della sessione con il nuovo codice standard.
Notebook PySpark 3 ([!DNL Spark] 2.3 - obsoleto) PySpark 3 ([!DNL Spark] 2.4)
Kernel PySpark 3 Python 3
Codice
  [!DNL scintilla]


da pyspark.sql importare SparkSessionspark = SparkSession.builder.getOrCreate()


Le immagini seguenti evidenziano le differenze di configurazione per PySpark 2.3 e PySpark 2.4. In questo esempio vengono utilizzati i blocchi appunti iniziali Aggregazione forniti in JupyterLab Launcher.
Esempio di configurazione per 2.3 (obsoleto)
Esempio di configurazione per 2.4

Utilizzo di %dataset

Con l'introduzione di Spark 2.4, %dataset la magia personalizzata è fornita per l'uso in nuovi notebook PySpark 3 (Spark 2.4) (Python 3 kernel).
Utilizzo
%dataset {action} --datasetId {id} --dataFrame {df}
Descrizione
Comando Data Science Workspace magico personalizzato per la lettura o la scrittura di un dataset da un Python blocco appunti (Python 3 kernel).
  • : Tipo di azione da eseguire sul set di dati. Sono disponibili due azioni: "read" o "write".
  • —datasetId : Utilizzato per fornire l'ID del set di dati da leggere o scrivere. Questo è un argomento obbligatorio.
  • —dataFrame : Il dataframe panda. Questo è un argomento obbligatorio.
    • Quando l'azione è "read", è la variabile in cui sono disponibili i risultati dell'operazione di lettura del dataset.
    • Quando l'azione è "scrivi", il dataframe viene scritto nel dataset.
  • —mode (facoltativo) : I parametri consentiti sono "batch" e "interattivo". Per impostazione predefinita, la modalità è impostata su "interattivo". Si consiglia di utilizzare la modalità "batch" durante la lettura di grandi quantità di dati.
Esempi
  • Leggi l'esempio : %dataset read --datasetId 5e68141134492718af974841 --dataFrame pd0
  • Esempio di scrittura: %dataset write --datasetId 5e68141134492718af974842 --dataFrame pd0

Carica in un dataframe in LocalContext

Con l'introduzione di Spark 2.4, %dataset magia personalizzata è fornito. L'esempio seguente evidenzia le differenze chiave per il caricamento del dataframe nei notebook PySpark (Spark 2.3) e PySpark (Spark 2.4):
Utilizzo di PySpark 3 (Spark2.3 - obsoleto) - Kernel PySpark 3
dataset_options = sc._jvm.com.adobe.platform.dataset.DataSetOptions
pd0 = spark.read.format("com.adobe.platform.dataset")
  .option(dataset_options.orgId(), "310C6D375BA5248F0A494212@AdobeOrg")
  .load("5e68141134492718af974844")

Utilizzo di PySpark 3 (Spark2.4) - Python 3 Kernel
%dataset read --datasetId 5e68141134492718af974844 --dataFrame pd0

Elemento
Descrizione
pd0
Nome dell'oggetto dataframe panas da utilizzare o creare.
Magia personalizzata per l'accesso ai dati in Python 3 kernel.
Le immagini seguenti evidenziano le differenze chiave nel caricamento dei dati per PySpark 2.3 e PySpark 2.4. In questo esempio vengono utilizzati i blocchi appunti iniziali Aggregazione forniti in JupyterLab Launcher.
Caricamento di dati in PySpark 2.3 (dataset Luma) - obsoleto
Caricamento dei dati in PySpark 2.4 (dataset Luma)
Con PySpark 3 (Spark 2.4) sc = spark.sparkContext è definito nel caricamento.
CaricamentoExperience Cloud Platformdei dati in PySpark 2.3 - obsoleto
CaricamentoExperience Cloud Platformdei dati in PySpark 2.4
Con PySpark 3 (Spark 2.4) non è più necessario definire org_id e dataset_id non è più necessario definirlo. Inoltre, df = spark.read.format è stato sostituito con una magia personalizzata %dataset per semplificare la lettura e la scrittura dei dataset.
Elemento
description
Magia personalizzata per l'accesso ai dati in Python 3 kernel.
—mode può essere impostato su interactive o batch . Il valore predefinito per —mode è interactive . Si consiglia di utilizzare la batch modalità quando si leggono grandi quantità di dati.

Creazione di un fotogramma dati locale

Con PySpark 3 (Spark 2.4) %% sparkmagic non è più supportato. Non è più possibile utilizzare le operazioni seguenti:
  • %%help
  • %%info
  • %%cleanup
  • %%delete
  • %%configure
  • %%local
Nella tabella seguente sono illustrate le modifiche necessarie per convertire le query %%sql sparkmagic:
Notebook PySpark 3 ([!DNL Spark] 2.3 - obsoleto) PySpark 3 ([!DNL Spark] 2.4)
Kernel PySpark 3 [!DNL Python] 3
Codice
%%sql -o dfselect * da sparkdf


 %%sql -o df -n limitselect * da sparkdf


%%sql -o df -qselect * da sparkdf


 %%sql -o df -r frazionselect * da sparkdf


df = spark.sql(''' SELECT * FROM sparkdf'''')


df = spark.sql(''' SELECT * FROM sparkdf LIMIT limit''')


df = spark.sql(''' SELECT * FROM sparkdf LIMIT limit''')


sample_df = df.sample(fraction)


È inoltre possibile specificare un campione di sementi facoltativo, ad esempio un valore booleano conSostituzione, una doppia frazione o un valore seed lungo.
Le immagini seguenti evidenziano le differenze chiave per la creazione di un fotogramma dati locale in PySpark 2.3 e PySpark 2.4. In questo esempio vengono utilizzati i blocchi appunti iniziali Aggregazione forniti in JupyterLab Launcher.
Crea dataframe locale PySpark 2.3 - obsoleto
Crea dataframe locale PySpark 2.4
Con PySpark 3 (Spark 2.4) %%sql Sparkmagic non è più supportato ed è stato sostituito con il seguente:

Scrivere in un dataset

Con l'introduzione di Spark 2.4, viene fornita la magia %dataset personalizzata che rende la scrittura di dataset più pulita. Per scrivere in un dataset, utilizzare il seguente esempio Spark 2.4:
Utilizzo di PySpark 3 (Spark2.3 - obsoleto) - Kernel PySpark 3
userToken = spark.sparkContext.getConf().get("spark.yarn.appMasterEnv.USER_TOKEN")
serviceToken = spark.sparkContext.getConf().get("spark.yarn.appMasterEnv.SERVICE_TOKEN")
serviceApiKey = spark.sparkContext.getConf().get("spark.yarn.appMasterEnv.SERVICE_API_KEY")

dataset_options = sc._jvm.com.adobe.platform.dataset.DataSetOptions

pd0.write.format("com.adobe.platform.dataset")
  .option(dataset_options.orgId(), "310C6D375BA5248F0A494212@AdobeOrg")
  .option(dataset_options.userToken(), userToken)
  .option(dataset_options.serviceToken(), serviceToken)
  .option(dataset_options.serviceApiKey(), serviceApiKey)
  .save("5e68141134492718af974844")

Utilizzo di PySpark 3 (Spark2.4) -Python3 Kernel
%dataset write --datasetId 5e68141134492718af974844 --dataFrame pd0
pd0.describe()
pd0.show(10, False)

Elemento
description
pd0
Nome dell'oggetto dataframe panas da utilizzare o creare.
Magia personalizzata per l'accesso ai dati in Python 3 kernel.
—mode può essere impostato su interactive o batch . Il valore predefinito per —mode è interactive . Si consiglia di utilizzare la batch modalità quando si leggono grandi quantità di dati.
Le immagini seguenti evidenziano le differenze chiave per la riscrittura dei dati Platform in PySpark 2.3 e PySpark 2.4. In questo esempio vengono utilizzati i blocchi appunti iniziali Aggregazione forniti in JupyterLab Launcher.
Scrittura dei dati suPlatformPySpark 2.3 - obsoleto
Scrittura dei dati suPlatformPySpark 2.4
Con PySpark 3 (Spark 2.4) la magia %dataset personalizzata elimina la necessità di definire valori quali userToken , serviceToken , serviceApiKey e .option . Inoltre, orgId non è più necessario definirla.

Spark Guida alla migrazione dei notebook da 2,3 a Spark 2,4 (Scala)

Con l'introduzione di Spark 2.4 a JupyterLab Notebooks, i notebook esistenti Spark (Spark 2.3) ora utilizzano il kernel Scala invece del Spark kernel. Ciò significa che il codice esistente in esecuzione su Spark (Spark 2.3) non è supportato in Scala (Spark 2.4). Inoltre, tutti i nuovi Spark notebook devono utilizzare Scala (Spark 2.4) nel JupyterLab Launcher.
Spark (Spark 2.3) è obsoleto e deve essere rimosso in una versione successiva. Tutti gli esempi esistenti sono impostati in modo da essere sostituiti con gli esempi Scala (Spark 2.4).
Per convertire i notebook esistenti Spark (Spark 2.3) in Scala (Spark 2.4), seguire gli esempi riportati di seguito:

Kernel

I notebook Scala (Spark 2.4) utilizzano il kernel Scala invece del Spark kernel obsoleto utilizzato nei Spark (Spark 2.3 - obsoleto) notebook.
Per confermare o modificare il kernel nell' JupyterLab interfaccia utente, selezionare il pulsante del kernel situato nella barra di navigazione in alto a destra del blocco appunti. Viene visualizzato il pulsante Seleziona kernel . Se si utilizza uno dei blocchi appunti di avvio predefiniti, il kernel è già selezionato. Nell'esempio seguente viene utilizzato il blocco appunti Clustering Scala in JupyterLab Launcher.
Selezionando il menu a discesa si apre un elenco dei kernel disponibili.
Per i notebook Scala (Spark 2.4), selezionate il kernel Scala e confermate facendo clic sul pulsante Seleziona .

Inizializzazione di SparkSession

Tutti i notebook Scala (Spark 2.4) richiedono l’inizializzazione della sessione con il seguente codice standard:
Notebook Spark ([!DNL Spark] 2.3 - obsoleto) Scala ([!DNL Spark] 2.4)
Kernel [!DNL Spark] Scala
code nessun codice richiesto
import org.apache.spark.sql.{ SparkSession } val spark = SparkSession .builder() .master("local") .getOrCreate()


L'immagine Scala (Spark 2.4) riportata di seguito evidenzia la differenza fondamentale nell'inizializzazione di sparkSession con il kernel Spark 2.3 Spark e il kernel Spark 2.4 Scala. In questo esempio vengono utilizzati i notebook Clustering iniziali forniti in JupyterLab Launcher.
Spark (Spark2.3 - obsoleto)
Spark (Spark 2.3 - obsoleto) utilizza il Spark kernel e quindi non era necessario definire Spark.
Scala (Spark2.4)
L'utilizzo di Spark 2.4 con il kernel Scala richiede che vengano definiti val spark e importati SparkSesson per poter leggere o scrivere:

Dati query

Con Scala (Spark 2.4) %% sparkmagic non è più supportato. Non è più possibile utilizzare le operazioni seguenti:
  • %%help
  • %%info
  • %%cleanup
  • %%delete
  • %%configure
  • %%local
Nella tabella seguente sono illustrate le modifiche necessarie per convertire le query %%sql sparkmagic:
Notebook [!DNL Spark] ([!DNL Spark] 2.3 - obsoleto) Scala ([!DNL Spark] 2.4)
Kernel [!DNL Spark] Scala
code
%%sql -o dfselect * da sparkdf


%%sql -o df -n limitselect * da sparkdf


%%sql -o df -qselect * da sparkdf


%%sql -o df -r frazionselect * da sparkdf


val df = spark.sql(''' SELECT * FROM sparkdf''')


val df = spark.sql(''' SELECT * FROM sparkdf LIMIT limit'''')


val df = spark.sql(''' SELECT * FROM sparkdf LIMIT limit'''')


val_sample_df = df.sample(fraction) 

L'immagine Scala (Spark 2.4) riportata di seguito evidenzia le differenze chiave nella creazione di query con il kernel Spark 2.3 Spark e Spark 2.4 Scala. In questo esempio vengono utilizzati i notebook Clustering iniziali forniti in JupyterLab Launcher.
Spark (Spark2.3 - obsoleto)
Il notebook Spark (Spark 2.3 - obsoleto) utilizza il Spark kernel. Il Spark kernel supporta e utilizza %%sql sparkmagic.
Scala (Spark2.4)
Il kernel Scala non supporta più %%sql sparkmagic. Il codice sparkmagic esistente deve essere convertito.

Lettura di un dataset

In Spark 2.3 era necessario definire le variabili per option i valori utilizzati per leggere i dati o utilizzare i valori non elaborati nella cella del codice. In Scala è possibile utilizzare sys.env("PYDASDK_IMS_USER_TOKEN") per dichiarare e restituire un valore, eliminando la necessità di definire variabili come var userToken . Nell'esempio di Scala (Spark 2.4) riportato di seguito, sys.env viene utilizzato per definire e restituire tutti i valori richiesti per la lettura di un dataset.
UtilizzoSpark (Spark2.3 - obsoleto) -SparkKernel
import com.adobe.platform.dataset.DataSetOptions
var df1 = spark.read.format("com.adobe.platform.dataset")
  .option(DataSetOptions.orgId, "310C6D375BA5248F0A494212@AdobeOrg")
  .option(DataSetOptions.batchId, "dbe154d3-197a-4e6c-80f8-9b7025eea2b9")
  .load("5e68141134492718af974844")

Utilizzo di Scala (Spark2.4) - Kernel Scala
import org.apache.spark.sql.{Dataset, SparkSession}
val spark = SparkSession.builder().master("local").getOrCreate()
val df1 = spark.read.format("com.adobe.platform.query")
  .option("user-token", sys.env("PYDASDK_IMS_USER_TOKEN"))
  .option("ims-org", sys.env("IMS_ORG_ID"))
  .option("api-key", sys.env("PYDASDK_IMS_CLIENT_ID"))
  .option("service-token", sys.env("PYDASDK_IMS_SERVICE_TOKEN"))
  .option("mode", "interactive")
  .option("dataset-id", "5e68141134492718af974844")
  .load()

elemento
description
df1
Variabile che rappresenta il fotogramma dati Pandas utilizzato per leggere e scrivere i dati.
token utente
Token utente recuperato automaticamente tramite sys.env("PYDASDK_IMS_USER_TOKEN") .
service-token
Token di servizio recuperato automaticamente tramite sys.env("PYDASDK_IMS_SERVICE_TOKEN") .
ims-org
Il vostro ID ims-org che viene recuperato automaticamente utilizzando sys.env("IMS_ORG_ID") .
api-key
Il tasto API che viene recuperato automaticamente utilizzando sys.env("PYDASDK_IMS_CLIENT_ID") .
Le immagini riportate di seguito evidenziano le differenze chiave nel caricamento dei dati con i punti Spark 2.3 e Spark 2.4. In questo esempio vengono utilizzati i notebook Clustering iniziali forniti in JupyterLab Launcher.
Spark (Spark2.3 - obsoleto)
Il notebook Spark (Spark 2.3 - obsoleto) utilizza il Spark kernel. Le due celle seguenti mostrano un esempio di caricamento del set di dati con un ID set di dati specificato nell'intervallo di date di (2019-3-21, 2019-3-29).
Scala (Spark2.4)
Il notebook Scala (Spark 2.4) utilizza il kernel Scala, che richiede più valori al momento dell'impostazione, come evidenziato nella prima cella di codice. Inoltre, var mdata richiede la compilazione di più option valori. In questo blocco appunti, il codice precedentemente menzionato per l'inizializzazione di SparkSession è incluso nella cella di var mdata codice.
In Scala è possibile utilizzare sys.env() per dichiarare e restituire un valore dall'interno option . Questo elimina la necessità di definire le variabili se sai che verranno utilizzate solo una volta. L'esempio seguente prende val userToken in considerazione l'esempio precedente e lo dichiara in linea all'interno option :
.option("user-token", sys.env("PYDASDK_IMS_USER_TOKEN"))

Scrivere in un dataset

Come per la lettura di un set di dati , la scrittura in un set di dati richiede option valori aggiuntivi descritti nell'esempio seguente. In Scala è possibile utilizzare sys.env("PYDASDK_IMS_USER_TOKEN") per dichiarare e restituire un valore, eliminando la necessità di definire variabili come var userToken . Nell'esempio di Scala riportato di seguito, sys.env è utilizzato per definire e restituire tutti i valori richiesti necessari per la scrittura in un dataset.
UtilizzoSpark (Spark2.3 - obsoleto) -SparkKernel
import com.adobe.platform.dataset.DataSetOptions

var userToken = spark.sparkContext.getConf.getOption("spark.yarn.appMasterEnv.USER_TOKEN").get
var serviceToken = spark.sparkContext.getConf.getOption("spark.yarn.appMasterEnv.SERVICE_TOKEN").get
var serviceApiKey = spark.sparkContext.getConf.getOption("spark.yarn.appMasterEnv.SERVICE_API_KEY").get

df1.write.format("com.adobe.platform.dataset")
  .option(DataSetOptions.orgId, "310C6D375BA5248F0A494212@AdobeOrg")
  .option(DataSetOptions.userToken, userToken)
  .option(DataSetOptions.serviceToken, serviceToken)
  .option(DataSetOptions.serviceApiKey, serviceApiKey)
  .save("5e68141134492718af974844")

Utilizzo di Scala (Spark2.4) - Kernel Scala
import org.apache.spark.sql.{Dataset, SparkSession}

val spark = SparkSession.builder().master("local").getOrCreate()

df1.write.format("com.adobe.platform.query")
  .option("user-token", sys.env("PYDASDK_IMS_USER_TOKEN"))
  .option("service-token", sys.env("PYDASDK_IMS_SERVICE_TOKEN"))
  .option("ims-org", sys.env("IMS_ORG_ID"))
  .option("api-key", sys.env("PYDASDK_IMS_CLIENT_ID"))
  .option("mode", "interactive")
  .option("dataset-id", "5e68141134492718af974844")
  .save()

elemento
description
df1
Variabile che rappresenta il fotogramma dati Pandas utilizzato per leggere e scrivere i dati.
token utente
Token utente recuperato automaticamente tramite sys.env("PYDASDK_IMS_USER_TOKEN") .
service-token
Token di servizio recuperato automaticamente tramite sys.env("PYDASDK_IMS_SERVICE_TOKEN") .
ims-org
Il vostro ID ims-org che viene recuperato automaticamente utilizzando sys.env("IMS_ORG_ID") .
api-key
Il tasto API che viene recuperato automaticamente utilizzando sys.env("PYDASDK_IMS_CLIENT_ID") .