COPY FROM表示“在90秒内没有插入记录”,但确实插入了记录

时间:2017-09-20 13:23:14

标签: cassandra cql cqlsh cassandra-3.0

我有两个使用相同的简单python脚本生成的.csv文件。两个都有6列,一个有365行,另一个有120,当我尝试copy from更大的文件时,它按预期工作,但是当我对较小的文件执行相同操作时,我得到:

No records inserted in 90 seconds, aborting

然而,当我在桌面上做select时,我发现实际上已经添加了一些行。这发生在新创建的表中,无论我首先尝试导入哪个文件。

以前有人有这个问题吗?任何人都知道是什么原因造成的?

我正在使用cqlsh版本5.0.1,Cassandra 3.11.0,CQL规范3.4.4,Ubuntu 16.04。

表格:

create table rated_skills (  primary_group varchar, secondary_group varchar, tertiary_group varchar, skill varchar, person varchar, rating int, primary key ((primary_group), skill, rating, person)) with clustering order by (skill desc, rating desc);

复制命令:

copy rated_skills (primary_group, secondary_group, tertiary_group, skill, person, rating) from 'methodologies_output.csv';

不起作用的csv:Here

2 个答案:

答案 0 :(得分:2)

我猜你的解决方案无法正常工作的原因可能是因为您使用的是列名,例如' primary'这当然是cql中的保留字。

当我的列名与您的列名相同时,我无法执行复制,在我更改前三列之后,它完全正常工作:

create table rated_skills (group1 varchar, group2 varchar, group3 varchar, skill varchar, person varchar, rating int, primary key ((group1), skill, rating, person)) with clustering order by (skill desc, rating desc)

从* .csv复制

copy 'keyspace'.rated_skills (group1, group2, group3, skill, person,rating) from 'csv.csv';

此外,请记住,如果您使用庞大的数据集,您可以使用sstable编写器和sstableloader来更快地加载数据。

答案 1 :(得分:0)

使用COPY导入大型csv文件时,显示此消息时,我也遇到了类似的问题。但就我而言,该过程没有将任何行导入表中。

有问题的表中有一些列使用UDT,我认为它们会极大地降低性能,从而导致超时。

通过使用COPY上的参数,将CHUNKSIZENUMPROCESSES设置为比默认值1000和更低的值,我可以解决此问题。分别16

我使用的命令是COPY mytable FROM 'mytable.csv' USING HEADER=TRUE AND CHUNKSIZE=50 AND NUMPROCESSES=4。没有两个额外的参数,我将无法导入文件。

您可以找到COPY here的不同参数。