我有两个.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
我猜你的解决方案不起作用的原因可能是因为你使用的是列名,例如'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来更快地加载数据。
当使用COPY
导入大型csv
文件时,我遇到了类似的问题。但在我的情况下,该进程没有将任何行导入表中。
有问题的表有一些使用UDT
s的列,我认为这会大大降低性能,使其进入超时状态。
我能够通过在COPY
上使用参数来解决这个问题,将CHUNKSIZE
和NUMPROCESSES
设置为低于默认值的值,分别是1000
和16
。
我使用的命令是COPY mytable FROM 'mytable.csv' USING HEADER=TRUE AND CHUNKSIZE=50 AND NUMPROCESSES=4
。没有这两个额外的参数我无法导入文件。
你可以找到COPY
here的不同参数。