cassandra副本[Errno 13]权限被拒绝

9rbhqvlz  于 2022-11-05  发布在  Cassandra
关注(0)|答案(6)|浏览(245)

我是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'
我做错了什么?

xyhw6mcr

xyhw6mcr1#

我遇到了同样的问题。我通过使用--debug标志解决了这个问题。我的浮点数使用了','而不是'.',所以我的csv无法被解析。CQLSH试图写一个错误文件来描述这个问题,但是我在/root中,cassandra无法写入。所以我cd'ed到/tmp,然后做了同样的操作,这次我得到了错误,显示我的浮点数无法被解析

iqjalb3h

iqjalb3h2#

这个问题最终是一个红帽权限问题,与Cassandra无关。感谢查看。

byqmnocz

byqmnocz3#

我得到的错误与屏幕截图_Errored中显示的错误相同。将.csv文件移动到.cassandra目录,并能够执行与屏幕截图_worked


中显示的相同的csql命令

ct2axkht

ct2axkht4#

除了在其他响应中描述的其他情况之外,如果COPY命令中出现不正确的列顺序或列数,则可能会出现如下所述的错误。
例如,请考虑一个带有以下标题行的CSV文件:

actor, added date, video id, character name, description, encoding, tags, title, user id

如果我使用以下COPY命令:

cqlsh:killrvideo> COPY videos_by_actor(actor, added_date, character_name, description, encoding, tags, title, user_id, video_id) FROM 'videos_by_actor.csv' WITH HEADER = true;

我将得到错误13:

Using 7 child processes
Starting copy of killrvideo.videos_by_actor with columns [actor, added_date, character_name, description, encoding, tags, title, user_id, video_id].
[Errno 13] Permission denied: 'import_killrvideo_videos_by_actor.err'

如果我在COPY命令中正确地设置了列的名称,如下所示

cqlsh:killrvideo>COPY videos_by_actor(actor, added_date, video_id, character_name, description, encoding, tags, title, user_id ) FROM 'videos_by_actor.csv' WITH HEADER = true

则命令成功完成。

Using 7 child processes

Starting copy of killrvideo.videos_by_actor with columns [actor, added_date, video_id, character_name, description, encoding, tags, title, user_id].
Processed: 81659 rows; Rate:    5149 rows/s; Avg. rate:    2520 rows/s
81659 rows imported from 1 files in 32.399 seconds (0 skipped).
bogh5gae

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容器:

$ docker run -d --rm --name cassandra -v /tmp:/bitnami -u 1001 bitnami/cassandra:4.0

然后,在cqlsh中发出的用于从主机导入/tmp/random_data1.csvCOPY命令应为:

> COPY dicts.dict1 (key, value) FROM '/bitnami/random_data1.csv' WITH HEADER = true;

并且X1M9N1X文件应当由用户1001拥有或者可由所有用户阅读。

hmmo2u0o

hmmo2u0o6#

这个错误最奇怪的原因是缺少对错误文件(默认配置文件中的路径为空)的写访问权限。如果以非root用户身份运行Cassandra(container),这种情况尤其可能发生。
要解决这个问题,需要在执行客户端时传递一个自定义配置文件(例如/bitnami/cqlshrc):

$ cqlsh -u <user> -p <pass> --cqlshrc=/bitnami/cqlshrc

安装时应该附带一个示例配置cqlshrc.sample(使用cd / && find | grep cqlshrc可以找到它)。
要在自定义配置文件中进行的更改:


# uncomment this section:

; [copy-from] -> [copy-from]

# uncomment and specify custom error file

; errfile = -> errfile = /bitnami/cassandra-errfile.txt

有关问题设置的更多信息:错误文件。

相关问题