0 / 0
Volver a la versión inglesa de la documentación
Scripts con Python para Spark
Última actualización: 04 oct 2024
Scripts con Python para Spark (SPSS Modeler)

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

Los datos se transfieren entre un script Python/Spark y el contexto de ejecución en forma de un marco de datos de Spark SQL. Un script que consume datos (es decir, cualquier nodo excepto un nodo de importación) debe recuperar el marco de datos del contexto:
inputData = asContext.getSparkInputData()
Un script que genera datos (es decir, cualquier nodo excepto un nodo de terminal) debe devolver un marco de datos al contexto:
asContext.setSparkOutputData(outputData)
Puede utilizar el contexto SQL para crear un marco de datos de salida a partir de un RDD donde sea necesario:
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.

Puede obtener el modelo de datos para los datos de entrada utilizando el atributo :schema del marco de datos de entrada:
inputSchema = inputData.schema
Los campos que se pasan sin modificar se pueden copiar del modelo de datos de entrada en el modelo de datos de salida. Los campos que son nuevos o modificados en el modelo de datos de salida se pueden crear utilizando el constructor 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.

El script para un nodo de transformación puede seguir este patrón general:
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.

Un valor en este contexto puede ser PMML, HTML, una imagen, etc. Para añadir un valor al contenido del modelo (en el script de compilación):
asContext.setModelContentFromString(key, value, mimeType=None)
Para recuperar un valor del contenido de modelo (en el script de puntuación):
value = asContext.getModelContentToString(key)
Como acceso directo, donde un modelo o una parte de un modelo se almacena en un archivo o en una carpeta en el sistema de archivos, puede empaquetar todo el contenido almacenado en dicha ubicación en una llamada (en el script de creación):
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.

Si necesita una ubicación temporal para almacenar el contenido mientras se crea el modelo puede obtener una ubicación apropiada del contexto:
path = asContext.createTemporaryFolder()
Para recuperar contenido existente en una ubicación temporal en el sistema de archivos (en el script de puntuación):
path = asContext.getModelContentToPath(key)

Manejo de errores

Para generar errores, emita una excepción desde el script y se muestre al usuario SPSS Modeler . Están predefinidas algunas excepciones en el módulo spss.pyspark.exceptions. Por ejemplo:
from spss.pyspark.exceptions import ASContextException
if ... some error condition ...:
     raise ASContextException("message to display to user")
Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información