SPSS Modeler peut exécuter des scripts Python à l'aide de l'infrastructure Apache Spark pour traiter les données. Cette documentation présente une description de l'API Python pour les interfaces fournies.
L'installation de SPSS Modeler inclut une distribution Spark.
Accès aux données
inputData = asContext.getSparkInputData()
asContext.setSparkOutputData(outputData)
outputData = sqlContext.createDataFrame(rdd)
Définition du modèle de données
Un noeud qui produit des données doit également fournir un modèle de données qui décrit les champs visibles en aval du noeud. Dans la terminologie SQL Spark, le modèle de données est le schéma.
Un script Python/Spark définit son modèle de données de sortie sous forme d'un objet
pyspsark.sql.types.StructType
. StructType
décrit une ligne
dans la trame de données de sortie et est construit à partir d'une liste d'objets StructField
. Chaque StructField
décrit un seul champ dans le modèle de données de sortie.
:schema
de la
trame de données d'entrée :inputSchema = inputData.schema
StructField
:field = StructField(name, dataType, nullable=True, metadata=None)
Pour des informations sur le constructeur, consultez la documentation Spark.
Vous devez fournir au moins le nom de champ et son type de données. Vous pouvez éventuellement spécifier des métadonnées pour fournir une mesure, un rôle et une description pour la zone (voir Métadonnées de données).
Mode DataModelOnly
SPSS Modeler doit connaître le modèle de données de sortie d'un noeud avant son exécution pour permettre l'édition en aval. Pour obtenir le modèle de données de sortie pour un noeud Python/Spark, SPSS Modeler exécute le script dans un mode modèle de données uniquement spécial où aucune donnée n'est disponible. Le script peut identifier ce mode à l'aide de la méthode
isComputeDataModelOnly
sur l'objet de contexte 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)
Génération d'un modèle
Un noeud qui génère un modèle doit renvoyer au contexte d'exécution du contenu qui décrit suffisamment le modèle pour que le noeud qui applique le modèle puisse le recréer exactement ultérieurement.
Le contenu du modèle est défini en termes de paires clé / valeur où la signification des clés et des valeurs est connue uniquement des noeuds de génération et de score et n'est pas interprétée par SPSS Modeler de quelque manière que ce soit. Le noeud peut éventuellement affecter un type MIME à une valeur avec l'intention que SPSS Modeler affiche les valeurs dont les types sont connus de l'utilisateur dans le nugget de modèle.
asContext.setModelContentFromString(key, value, mimeType=None)
value = asContext.getModelContentToString(key)
asContext.setModelContentFromPath(key, path)
Notez que dans ce cas, il n'y a pas d'option pour spécifier un type MIME car le bundle peut contenir différents types de contenu.
path = asContext.createTemporaryFolder()
path = asContext.getModelContentToPath(key)
Traitement des erreurs
spss.pyspark.exceptions
. Par exemple :from spss.pyspark.exceptions import ASContextException
if ... some error condition ...:
raise ASContextException("message to display to user")