Registro del lenguaje R e información sobre el tiempo de ejecución

Este ejemplo explora funcionalidades de registro que pueden no ser de uso común.

Código

El registro puede ayudarle a rastrear la ejecución de un AE. El AE debe estar registrado con una máscara de registro, y el registro debe estar habilitado a través de nzudxdbg. La información de tiempo de ejecución proporciona estadísticas sobre el sistema NPS, incluyendo el número de rebanadas de datos, S-Blades y locus de ejecución.

Introduzca el siguiente código en el archivo /tmp/logrun.R.

nz.fun <- function(){
    getNext()
    logMessage(NZ.DEBUG, "before getRuntime()")
    r <- getRuntime()
    apply(cbind(names(r),as.character(r)), 1, function(X){
        setOutput(0, X[1])
        setOutput(1, X[2])
        outputResult()
    })
    logMessage(NZ.DEBUG, "after getRuntime()")
}

Una compilación

Compila el código:

/nz/export/ae/utilities/bin/compile_ae --language r --template compile \
     --version 3 --db dev --user nz /tmp/logrun.R

Registro

Registra el ejemplo utilizando las opciones --mem y --mask. La opción --mask activa el registro para DEBUG y la opción --mem establece la información de tiempo de ejecución de memoria.

/nz/export/ae/utilities/bin/register_ae --language r --version 3 \
     --template udtf --exe logrun.R --sig "logrun(VARARGS)" \
     --return "TABLE(name VARCHAR(1000), value VARCHAR(1000))" \
     --db dev --user nz --level 4 --mask DEBUG

En ejecución

Antes de ejecutarlo, active el registro ejecutando nzudxdbg:

>nzudxdbg
Processing 1 spus
.
done
Processing host
done

Ejecute la consulta en nzsql:

SELECT * FROM TABLE WITH FINAL(logrun());
          NAME          | VALUE
------------------------+-------
 data.slice.id          | 0
 transaction.id         | 21814
 hardware.id            | 0
 number.data.slices     | 4
 number.spus            | 1
 suggested.memory.limit | 0
 locus                  | 1
 adapter.type           | 1
 user.query             | 1
 session.id             | 16231
(10 rows)

El registro del sistema NPS aparece en la ventana donde se inició el sistema NPS:

04-06-11 09:48:54 (dbos.14577) [d,udx ] before getRuntime()
04-06-11 09:48:54 (dbos.14577) [d,udx ] after getRuntime()