CQLSH客户端 - 模块对象没有属性'parse_options'

14

我尝试通过CQLSH客户端访问我的Cassandra服务器,以导入一个巨大的CSV文件。但是我遇到了"module' object has no attribute 'parse_options"错误。

我运行了以下命令:

cqlsh XXX.XXX.XX.XX XXXX --cqlversion="3.4.2" --execute="copy evolvdso.teste from '2016-10-26 15:25:10.csv' WITH DELIMITER =',' AND HEADER=TRUE --debug";

这是随后出现的调试和错误信息:

Starting copy of evolvdso.teste with columns ['ref_equip', 'date', 'load', 'ptd_assoc'].
Traceback (most recent call last):
  File "/usr/local/bin/cqlsh", line 1133, in onecmd
    self.handle_statement(st, statementtext)
  File "/usr/local/bin/cqlsh", line 1170, in handle_statement
    return custom_handler(parsed)
  File "/usr/local/bin/cqlsh", line 1834, in do_copy
    rows = self.perform_csv_import(ks, cf, columns, fname, opts)
  File "/usr/local/bin/cqlsh", line 1846, in perform_csv_import
    csv_options, dialect_options, unrecognized_options = copyutil.parse_options(self, opts)


AttributeError: 'module' object has no attribute 'parse_options'

你正在运行哪个版本的Cassandra?你是否不确定它是否可能是我在你的另一个评论中链接的https://issues.apache.org/jira/browse/CASSANDRA-12284? - Adam Holmberg
我正在运行版本3.7。是的,我看到了,谢谢。也许是同样的问题。我找到了一个解决方法,我正在使用这个:https://github.com/brianmhess/cassandra-loader 将CSV加载到我的远程数据库中,它工作得非常好! - Andre Garcia
我也使用pip安装了cqlsh客户端。是的,我认为这是同样的问题。 :) - Andre Garcia
最好使用与Cassandra分发捆绑的cqlsh版本。它们不是跨版本设计的,有时候很难确定该pypi包中发布的是哪个版本。 - Adam Holmberg
4个回答

9

当我使用从pip install cqlsh安装的cqlsh时,遇到相同的问题。 尝试仅使用cassandra工具cqlsh

sudo docker run -it cassandra /usr/bin/cqlsh

请参考jira


将近3年后,我仍然回到了这里。 :) - Andre Garcia

3

2020年的答案:

要使用Cassandra的cqlsh,请使用docker run -it cassandra /opt/cassandra/bin/cqlsh

如果您正在使用Bitnami的Cassandra映像,则cqlsh位于/opt/bitnami/cassandra/bin/cqlsh

然后执行COPY keyspace.table TO '/tmp/my_table.csv';


2

看起来pip版本存在一些问题,你应该通过官方包进行安装,例如:

apt install wget apt-transport-https
wget -q -O - https://www.apache.org/dist/cassandra/KEYS | apt-key add -
sh -c 'echo "deb http://www.apache.org/dist/cassandra/debian 311x main" > /etc/apt/sources.list.d/cassandra.list'
apt update
apt install -y cassandra

请注意,这也将包括cassandra服务,因此如果您不希望它们运行,您可能需要手动禁用它们。

2

我遇到了类似的问题,我的情况是默认的cqlsh路径是/usr/local/bin/cqlsh。(使用命令$ which cqlsh检查)

解决方案:使用Cassandra提供的/usr/bin/cqlsh连接Cassandra服务器或运行一些命令。例如,使用以下命令连接Cassandra服务器:

$ /usr/bin/cqlsh <cassandra_listen_ip>

OR run command with

$ /usr/bin/cqlsh <cassandra_listen_ip> -e "<command>"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接