我正在尝试导入具有约2000万行的CSV。
我进行了一次试运行,使用了几百行CSV,只是为了检查各列是否顺序正确,并且没有解析错误。一切顺利。
每次我尝试导入2,000万行CSV时,经过不同的时间后,导入失败。在我的本地计算机上,它在90分钟后失败,并显示以下错误。在服务器盒上,它会在10分钟内失败:
Processed 4050000 rows; Write: 624.27 rows/ss
code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info=
{'received_responses': 0, 'required_responses': 1, 'write_type': 0, 'consistency': 1}
Aborting import at record #4050617. Previously-inserted values still present.
4050671 rows imported in 1 hour, 26 minutes, and 43.649 seconds.
Run Code Online (Sandbox Code Playgroud)
Cassandra:协调器节点等待复制节点的响应超时(这是一个节点群集,复制因子为1,所以为什么要等待其他节点是另一个问题)
然后根据另一个线程中的建议,我更改了写超时,尽管我不确定这是根本原因。
write_request_timeout_in_ms: 20000
Run Code Online (Sandbox Code Playgroud)
(也尝试将其更改为300000)
但是它仍然最终失败。
所以现在,我将原始CSV切成许多500,000行CSV。这具有更好的成功率(相比于0!)。但是,由于各种原因,即使失败了5次中的2次。
有时我会收到以下错误:
Processed 460000 rows; Write: 6060.32 rows/ss
Connection heartbeat failure
Aborting import at record #443491. Previously inserted records are still present, and some records after that may be present as well.
Run Code Online (Sandbox Code Playgroud)
其他时候它只是停止在控制台上更新进度,唯一的出路就是中止使用 Ctrl+C
我大部分时间都是这样度过的。我的RDBMS运行着50亿行,愉快地运行着。我想用10倍的数据测试Cassandra,但即使一次导入一百万行也遇到了麻烦。
关于COPY命令如何进行的一个观察结果是:输入命令后,它开始以每秒约10,000行的速度开始写入。它以这种速度维持,直到插入了约80,000行。然后有大约30秒的暂停,此后它又消耗了70,000到90,000行,又暂停了30秒,依此类推,直到它完成了CSV中的所有行或中途因错误而失败或只是挂起。
我需要扎根。我真的希望发现自己在做一些愚蠢的事情,这不是我必须接受并解决的问题。
我正在使用Cassandra 2.2.3
小智 4
威尔是正确的。COPY 适用于小型数据集,当您开始达到数百万行时,通常会遇到困难。除了 SSTable 加载器之外,还有这个实用程序:https://github.com/brianmhess/cassandra-loader,我发现它具有非常好的性能和一些额外的便利。
| 归档时间: |
|
| 查看次数: |
3638 次 |
| 最近记录: |