0 / 0
Torna alla versione inglese della documentazione
Creazione di script con Python per Spark
Ultimo aggiornamento: 07 ott 2024
Script con Python per Spark (SPSS Modeler)

SPSS Modeler può eseguire gli script Python utilizzando il framework Apache Spark per elaborare i dati. Questa documentazione fornisce la descrizione di API Python per le interfacce fornite.

L'installazione di SPSS Modeler include una distribuzione Spark.

Accesso ai dati

I dati vengono trasferiti tra uno script Python/Spark e il contesto di esecuzione nella forma di un Spark SQL DataFrame. Uno script che utilizza i dati (cioè qualsiasi nodo ad eccezione di un nodo di importazione) deve recuperare la struttura dati dal contesto:
inputData = asContext.getSparkInputData()
Uno script che produce i dati (cioè qualsiasi nodo ad eccezione di un nodo terminale) deve restituire una struttura dati al contesto:
asContext.setSparkOutputData(outputData)
Si può utilizzare il contesto SQL per creare una struttura dati di output da un RDD quando necessario:
outputData = sqlContext.createDataFrame(rdd)

Definizione del modello di dati

Un nodo che produce dati deve anche definire un modello dati che descrive i campi visibili nel downstream del nodo. Nella terminologia Spark SQL , il modello di dati è lo schema.

Uno script Python/Spark definisce il relativo modello dati di output nella forma di un oggetto pyspsark.sql.types.StructType. Un StructType descrive una riga nella struttura dati di output e viene creato da un elenco di oggetti StructField. Ogni StructField descrive un singolo campo nel modello dati di output.

È possibile ottenere il modello di dati per i dati di input utilizzando l'attributo :schema del frame di dati di input:
inputSchema = inputData.schema
I campi che non sono stati modificati possono essere copiati dal modello dati di input al modello dati di output. I campi nuovi o modificati nel modello dati di output possono essere creati utilizzando il costruttore StructField
field = StructField(name, dataType, nullable=True, metadata=None)

Fare riferimento alla documentazione Spark per ulteriori informazioni sul costruttore.

È necessario fornire almeno un nome campo e il relativo tipo di dati. Facoltativamente, è possibile specificare i metadati per fornire una misura, un ruolo e una descrizione per il campo (vedere Metadati dei dati).

Modalità DataModelOnly

SPSS Modeler deve conoscere il modello di dati di output per un nodo, prima dell'esecuzione del nodo, per abilitare la modifica downstream. Per ottenere il modello di dati di output per un nodo Python/Spark, SPSS Modeler esegue lo script in una modalità solo modello dati speciale in cui non sono disponibili dati. Lo script può identificare questa modalità utilizzando il metodo isComputeDataModelOnly sull'oggetto di contesto Analytic Server.

Lo script per un nodo di trasformazione può seguire questo pattern generale:
if asContext.isComputeDataModelOnly():   
        inputSchema = asContext.getSparkInputSchema()   
        outputSchema = ... # construct the output data model   
        asContext.setSparkOutputSchema(outputSchema)
else:   
        inputData = asContext.getSparkInputData()   
        outputData = ... # construct the output data frame    
        asContext.setSparkOutputData(outputData)

Creazione di un modello

Un nodo che crea un modello deve restituire al contesto di esecuzione il contenuto che descrive sufficientemente il modello in modo che il nodo che lo applica possa ricrearlo esattamente in un successivo momento.

Il contenuto del modello viene definito in termini di coppie chiave / valore in cui il significato delle chiavi e dei valori è noto solo ai nodi di creazione e di calcolo del punteggio e non viene interpretato in alcun modo da SPSS Modeler . Facoltativamente, il nodo può assegnare un tipo MIME a un valore con l'intento che SPSS Modeler possa visualizzare i valori che hanno tipi noti all'utente nel nugget del modello.

Un valore in questo contesto può essere PMML, HTML, un'immagine, ecc. Per aggiungere un valore al contenuto del modello (nello script di generazione):
asContext.setModelContentFromString(key, value, mimeType=None)
Per recuperare un valore dal contenuto del modello (nello script di calcolo del punteggio).
value = asContext.getModelContentToString(key)
Da un collegamento, in cui un modello o parte di un modello è archiviato in un file o cartella nel filesystem, è possibile mettere insieme l'intero contenuto archiviato in tale ubicazione in una chiamata (nello script di build):
asContext.setModelContentFromPath(key, path)

Considerare che in questo caso non è possibile specificare un tipo MIME perché il bundle può contenere diversi tipi di contenuto.

Se è necessaria un'ubicazione temporanea per archiviare il contenuto durante la creazione del modello è possibile ottenere un'appropriata ubicazione dal contesto:
path = asContext.createTemporaryFolder()
Per recuperare il contenuto esistente in un'ubicazione temporanea nel filesystem (nello script di calcolo del punteggio):
path = asContext.getModelContentToPath(key)

Gestione degli errori

Per generare errori, generare un'eccezione dallo script e visualizzarla all'utente SPSS Modeler . Alcune eccezioni sono predefinite nel modulo spss.pyspark.exceptions. Ad esempio:
from spss.pyspark.exceptions import ASContextException
if ... some error condition ...:
     raise ASContextException("message to display to user")
Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni