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

问题描述 投票:0回答:2

我有两个.csv文件,我使用相同的简单python脚本生成。两个都有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

cassandra cql cqlsh cassandra-3.0
2个回答
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
投票

当使用COPY导入大型csv文件时,我遇到了类似的问题。但在我的情况下,该进程没有将任何行导入表中。

有问题的表有一些使用UDTs的列,我认为这会大大降低性能,使其进入超时状态。

我能够通过在COPY上使用参数来解决这个问题,将CHUNKSIZENUMPROCESSES设置为低于默认值的值,分别是100016

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

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

© www.soinside.com 2019 - 2024. All rights reserved.