【发布时间】:2021-04-16 01:44:21
【问题描述】:
如何使用 Aerospike Python Client udf 从 Aerospike 中的一组记录中删除多个 bin?我尝试一次将一个 bin 传递给 udf,并使用 scan 从所有记录中删除该 bin,但这正如预期的那样效率非常低。我还尝试在 python 中创建一个 bin 列表并将该列表传递给 UDF。以下是代码供参考:
假设我有 2000 条记录和 200 个名称为 '1'、'2'、'3' 等的 bin。我想删除从 '1' 到 '99' 的 bin。使用的命名空间是testns,使用的集合是udfBins。 testUdf.lua 是包含 udf 的 lua 文件,my_udf 是 lua 函数名。
test.py
scan = client.scan("testns", "udfBins")
bins = [str(i) for i in range(1,366)]
# for i in range(1,100):
scan.apply("testUdf", "my_udf", [bins])
job_id = scan.execute_background()
while True:
response = client.job_info(job_id, aerospike.JOB_SCAN)
if response["status"] != aerospike.JOB_STATUS_INPROGRESS:
break
print("job done")
testUdf.lua
function my_udf(rec, bins)
info(bins)
for bin in python.iter(bins)
do
rec[bin] = nil
end
aerospike:update(rec)
end
上面的代码不起作用,我无法弄清楚原因和解决手头问题的正确方法。非常感谢任何帮助。
提前非常感谢
【问题讨论】:
标签: python lua user-defined-functions aerospike