Creazione di script con Python per Spark
SPSS Modeler è possibile eseguire 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 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 l'attributo del frame dei dati di input:inputSchema = inputData.schemaStructFieldfield = 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 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 dei dati di output di un nodo, prima che il nodo venga eseguito, per consentire la modifica a valle. Per ottenere il modello di dati di output per un nodo Python /Spark, SPSS Modeler esegue lo script in una modalità speciale solo modello di dati 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 è definito in termini di coppie chiave/valore, dove il significato delle chiavi e dei valori è noto solo ai nodi di costruzione e punteggio e non viene interpretato in alcun SPSS Modeler modo da. Facoltativamente, il nodo può assegnare un tipo MIME a un valore con l'intento di SPSS Modeler visualizzare quei 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")