我有两个使用相同的简单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
答案 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
上的参数,将CHUNKSIZE
和NUMPROCESSES
设置为比默认值1000
和更低的值,我可以解决此问题。分别16
。
我使用的命令是COPY mytable FROM 'mytable.csv' USING HEADER=TRUE AND CHUNKSIZE=50 AND NUMPROCESSES=4
。没有两个额外的参数,我将无法导入文件。
您可以找到COPY
here的不同参数。