try replacing your command string with:
kill -9 `ps aux | grep cassandra | grep -v "grep " | awk '{print $2}'`
This will prevent grep from appearing in the results you are trying to parse.
What is actually happening, is that your parsing is picking up your grep process, and attempting to kill it, but it has already completed.
When you grep a string that does not exist in ps's output, you will get a response back, but it will be the PID of the grep process, which is of no use to you.
IE (I do not have a process called "thisIsNotAProcess"):
Minty17 ~ $ ps -aux | grep "thisIsNotAProcess"
username 9364 0.0 0.0 11740 936 pts/2 S+ 04:38 0:00 grep --colour=auto thisIsNotAProcess
and if you plug it in to your command string:
Minty17 ~ $ kill -9 `ps aux | grep thisIsNotAProcess | awk '{print $2}'`
bash: kill: (9374) - No such process
Check here for more techniques to avoid this pitfall: Excluding grep from process list