看起来zookeeper CLI(zkCli.sh)不支持通配符 - 我没有查看动物园管理员代码,以确定它是否可能是设计明智的,或者我是否遗漏了一些愚蠢的东西。
以递归方式删除以字符串开头的节点的最佳方法是什么。我想做点什么:
./zkCli.sh rmr abc*
删除以abc开头的所有节点。除了使用Java / Python或类似的客户端之外,还有更简单的方法吗?或者换句话说,这只能通过ZK CLI实现吗?
答案 0 :(得分:6)
不,当前zkCli.sh
不支持通配符删除(根据实现
zkCli.sh
和DeleteCommand,python zkDelAll.py /abc
)
然而,创建一个变通方法是非常直截了当的,例如,在Python中使用DeleteAllCommand。结帐Kazoo,用法为:*
有趣的是,/abc*
是一个有效的路径字符,因此您可以使用路径from kazoo.client import KazooClient
zk = KazooClient(hosts='localhost:2181')
zk.start()
for child in zk.get_children('/'):
if child.startswith('abc'):
zk.delete('/' + child)
zk.stop()
创建一个znode。
编辑: 要点的核心实现如下:
{{1}}