我们正在使用pig脚本从hive将数据导出到Cassandra。 该脚本将截断cassandra表并运行export。
要执行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 :(得分:3)
您可以尝试这样的事情:
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"
这基本上意味着如果第一个命令失败,第二个命令将被执行,如果第二个命令失败,第三个命令将被执行。
另外,请记住,由于您正在进行一致性,因此所有拥有数据的节点都必须启动。
答案 1 :(得分:0)
您可以在尝试连接之前检查主机是否已启动:
一个选项是查看端口是否在远程主机上打开(使用nc:nc -zv <address> <port>
)。甚至使用nodetool -h 127.0.0.1 status
来获取节点列表。像nodetool status|grep UN|awk {'print $2'}