2017-10-04 117 views
0

我们使用一个pig脚本将数据从配置单元导出到Cassandra。 该脚本将截断cassandra表并运行导出。在cqlsh命令中使用多个主机

要执行TRUNCATE部分,我们使用下面的命令。但是,如果该节点此刻关闭,脚本将失败。

$ cqlsh -u user -p password host1 -e "USE randomkeyspace; CONSISTENCY ALL;TRUNCATE TABLE randomtable" 

是否有任何其他方式来运行此作业,以便它可以联系其他主机,如果host1关闭?

否则

可我们用这个 -

host=("host1" "host2" "host3") 

$ cqlsh -u user -p password $host -e "USE randomkeyspace; CONSISTENCY ALL;TRUNCATE TABLE randomtable" 

谢谢!

回答

0

你可以检查主机可达之前尝试连接到它: 一个选项是查看该端口是否是远程主机上打开(NC使用:nc -zv <address> <port>)。或者甚至使用nodetool -h 127.0.0.1 status来获取节点列表。像nodetool status|grep UN|awk {'print $2'}

2

你可以尝试这样的事:

cqlsh -u user -p password host1 -e "USE randomkeyspace; CONSISTENCY ALL;TRUNCATE TABLE randomtable" || cqlsh -u user -p password host2 -e "USE randomkeyspace; CONSISTENCY ALL;TRUNCATE TABLE randomtable" || cqlsh -u user -p password host3 -e "USE randomkeyspace; CONSISTENCY ALL;TRUNCATE TABLE randomtable" 

这基本上意味着,如果一个命令失败,第二个会被执行,如果第二失败,第三个将被执行。另外,请记住,由于您正在进行CONSISTENCY ALL,所有拥有您的数据的节点都必须启动。

相关问题