Python语言标量函数(远程模式)
代码
在远程模式下运行的代码与本地模式下的代码相同。 请参见Python语言标量函数。
部署
与本地模式一样,使用标准部署:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language python64 \
--template deploy ./applyop.py --version 3
注册
要将Python文件注册为远程模式,请运行
$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language python64 --version 3 \
--template udf --exe applyop.py \
--sig "remote_applyop(varchar(1), int4, int4)" --return int4 --remote \
--rname applyOpRemote
此外,还注册了一个发射器:
$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language python64 --version 3 \
--template udtf --exe applyop.py --sig "launch_remote_applyop(int8)" \
--return "TABLE(aeresult varchar(255))" --remote --launch \
--rname applyOpRemote
除了--rname、--exe和--sig 的名称部分外,所有启动器都与本例类似。 启动器本身是 UDTF 而不是 UDF,因为这是所有启动器的接口。 名称必须与代码中的名称一致。
正在运行
要在远程模式下运行 AE,可执行文件要作为 "服务器 "运行 在这种情况下,它只处理在主机上运行的查询。 通常,AE 也在 SPU 上启动。 在内部,服务器 AE 收到来自 NPS 系统的请求后,会在调用nzaeRun() 之前 "分叉"。使用 nzsql 的启动命令启动主机上运行的可执行文件:
SELECT * FROM TABLE WITH FINAL(launch_remote_applyop(0));
AERESULT
-------------------------------------------------------------------------
tran: 7192 DATA slc: 0 hardware: 0 machine: spubox1 process: 8306 thread: 8306
(1 row)</pre>
运行 ps -aef | grep applyop 显示可执行文件正在主机上运行。 现在运行 AE:
SELECT remote_applyop('*', 2, 13);
REMOTE_APPLYOP
----------------
26