SPSS Modeler puede ejecutar scripts Python utilizando la infraestructura Apache Spark para procesar datos. Esta documentación proporciona la descripción de la API Python para las interfaces proporcionadas.
La instalación de SPSS Modeler incluye una distribución de Spark.
Acceso a datos
inputData = asContext.getSparkInputData()
asContext.setSparkOutputData(outputData)
outputData = sqlContext.createDataFrame(rdd)
Definición del modelo de datos
Un nodo que genera datos también debe definir un modelo de datos que describe los campos visibles en sentido descendente del nodo. En la terminología de Spark SQL, el modelo de datos es el esquema.
Un script Python/Spark define su modelo de datos de salida en forma de un objeto pyspsark.sql.types.StructType
. Un StructType
describe una fila en el marco de datos de salida y se construye a partir de una lista de objetos StructField
. Cada StructField
describe un solo campo en el modelo de datos de salida.
:schema
del marco de datos de entrada:inputSchema = inputData.schema
StructField
:field = StructField(name, dataType, nullable=True, metadata=None)
Consulte la documentación de Spark si desea información sobre el constructor.
Debe proporcionar, al menos, el nombre del campo y su tipo de datos. Opcionalmente, puede especificar metadatos para proporcionar una medida, rol y descripción para el campo (consulte Metadatos de datos).
Modalidad DataModelOnly
SPSS Modeler necesita conocer el modelo de datos de salida para un nodo, antes de que se ejecute el nodo, para habilitar la edición en sentido descendente. Para obtener el modelo de datos de salida para un nodo Python/Spark, SPSS Modeler ejecuta el script en un modo especial de solo modelo de datos donde no hay datos disponibles. El script puede identificar este modalidad utilizando el método isComputeDataModelOnly
en el objeto de contexto de 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)
Creación de un modelo
Un nodo que crea un modelo debe devolver al contexto de ejecución algún contenido que describe el modelo de forma suficiente para que el nodo que aplica el modelo puede recrearlo de forma exacta más tarde.
El contenido del modelo se define en términos de pares de clave/valor, donde el significado de las claves y los valores sólo se conoce en los nodos de creación y puntuación y no es interpretado por SPSS Modeler de ninguna manera. Opcionalmente, el nodo puede asignar un tipo MIME a un valor con la intención de que SPSS Modeler muestre los valores que tienen tipos conocidos para el usuario en el nugget de modelo.
asContext.setModelContentFromString(key, value, mimeType=None)
value = asContext.getModelContentToString(key)
asContext.setModelContentFromPath(key, path)
Tenga en cuenta que en este caso no hay ninguna opción para especificar un tipo MIME porque el paquete puede contener distintos tipos de contenido.
path = asContext.createTemporaryFolder()
path = asContext.getModelContentToPath(key)
Manejo de errores
spss.pyspark.exceptions
. Por ejemplo:from spss.pyspark.exceptions import ASContextException
if ... some error condition ...:
raise ASContextException("message to display to user")