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
inputData = asContext.getSparkInputData()
asContext.setSparkOutputData(outputData)
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.
:schema
del frame di dati di input:inputSchema = inputData.schema
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.
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.
asContext.setModelContentFromString(key, value, mimeType=None)
value = asContext.getModelContentToString(key)
asContext.setModelContentFromPath(key, path)
Considerare che in questo caso non è possibile specificare un tipo MIME perché il bundle può contenere diversi tipi di contenuto.
path = asContext.createTemporaryFolder()
path = asContext.getModelContentToPath(key)
Gestione degli errori
spss.pyspark.exceptions
. Ad esempio:from spss.pyspark.exceptions import ASContextException
if ... some error condition ...:
raise ASContextException("message to display to user")