Zookeeper CLI - 通配符支持

Viv*_*ani 6 apache-zookeeper

看起来像zookeeper CLI(zkCli.sh)不支持通配符 - 我没有看过动物园管理员代码来弄清楚它是否可能是设计明智的,或者我是否在这里遗漏了一些愚蠢的东西.

然后以递归方式删除以字符串开头的节点的最佳方法是什么.我想做的事情如下:

./zkCli.sh rmr abc*
Run Code Online (Sandbox Code Playgroud)

删除所有以abc开头的节点.除了使用Java/Python或类似的客户端之外,还有更简单的方法吗?或者换句话说,这只能通过ZK CLI实现吗?

Mar*_*cah 8

不,当前zkCli.sh不支持通配符删除(根据DeleteCommandDeleteAllCommand的实现 ,它们是使用的类zkCli.sh)

但是,创建一个变通方法是非常直截了当的,例如在Python中使用Kazoo.查看这个要点,用法是:python zkDelAll.py /abc

有趣的是,它*是一个有效的路径字符,因此您可以使用路径创建一个znode /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()
Run Code Online (Sandbox Code Playgroud)