2017-10-04 116 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,所有擁有您的數據的節點都必須啓動。

相關問題