我是Cassandra新手。我刚刚在Red Hat Linux上建立了一个概念验证单节点机器。我最终获得了所有正确的权限并启动了机器。然后我创建了一个名为哈佛的密钥空间,发出use命令切换到harvard,然后创建了一个名为hmxpc的表。
然后我想导入一个.csv文件。为了简单起见,我将.csv文件放在cassandra文件夹中,chmod 755该文件,并发出以下命令:
copy hmxpc (course_id, userid_di, certified, explored, final_cc_cname_di, gender, grade, incomplete_flag, last_event_di, loe_di, nchapters, ndays_act, nevents, nforum_posts, nplay_video, registered, roles, start_time_di, viewed, yob) from 'cassandra/HMXPC.csv' with header=true;
当我运行它时,我得到以下错误:
[Errno 13]权限被拒绝:'import_哈佛_hmxpc.err'
我做错了什么?
6条答案
按热度按时间xyhw6mcr1#
我遇到了同样的问题。我通过使用--debug标志解决了这个问题。我的浮点数使用了','而不是'.',所以我的csv无法被解析。CQLSH试图写一个错误文件来描述这个问题,但是我在/root中,cassandra无法写入。所以我cd'ed到/tmp,然后做了同样的操作,这次我得到了错误,显示我的浮点数无法被解析
iqjalb3h2#
这个问题最终是一个红帽权限问题,与Cassandra无关。感谢查看。
byqmnocz3#
我得到的错误与屏幕截图_Errored中显示的错误相同。将.csv文件移动到.cassandra目录,并能够执行与屏幕截图_worked
中显示的相同的csql命令
ct2axkht4#
除了在其他响应中描述的其他情况之外,如果COPY命令中出现不正确的列顺序或列数,则可能会出现如下所述的错误。
例如,请考虑一个带有以下标题行的CSV文件:
如果我使用以下COPY命令:
我将得到错误13:
如果我在COPY命令中正确地设置了列的名称,如下所示
则命令成功完成。
bogh5gae5#
下面是我针对容器化用例(例如,使用
bitnami/cassandra:latest
时)的这个相当不特定(包含所有)的cqlsh
错误“[Errno 13] Permission denied
“的检查表:1.确保您为
COPY
命令提供的路径是 * 内部 *(容器)路径,而不是外部路径(主机、PVC等)。1.确保CSV文件对 * 内部 * 容器用户ID具有正确的读取权限,而不是外部用户ID(主机、PVC等),特别是如果CSV是在另一个容器化应用程序(例如Jupyter Notebook)中创建的。
1.如果文件包含头,我们的
COPY
命令以WITH HEADER = true;
结尾(是的,省略它也会引发权限被拒绝的错误...)例如,假设您已经像这样运行了Cassandra容器:
然后,在
cqlsh
中发出的用于从主机导入/tmp/random_data1.csv
的COPY
命令应为:并且X1M9N1X文件应当由用户1001拥有或者可由所有用户阅读。
hmmo2u0o6#
这个错误最奇怪的原因是缺少对错误文件(默认配置文件中的路径为空)的写访问权限。如果以非root用户身份运行Cassandra(container),这种情况尤其可能发生。
要解决这个问题,需要在执行客户端时传递一个自定义配置文件(例如
/bitnami/cqlshrc
):安装时应该附带一个示例配置
cqlshrc.sample
(使用cd / && find | grep cqlshrc
可以找到它)。要在自定义配置文件中进行的更改:
有关问题设置的更多信息:错误文件。