【发布时间】:2016-01-21 10:08:36
【问题描述】:
我试图导入包含大约 2000 万行的 CSV。
我使用 100 行的 CSV 进行了试运行,只是为了检查列是否有序并且没有解析错误。一切顺利。
每次我尝试导入 2000 万行 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.
Cassandra: Coordinator node timed out waiting for replica nodes' responses(这是一个单节点集群,复制因子为 1,所以为什么要等待其他节点是另一个问题)
然后根据另一个线程中的建议,我更改了写入超时,尽管我不相信这是根本原因。
write_request_timeout_in_ms: 20000
(也试过改成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.
其他时候它只是停止更新控制台上的进度,唯一的出路是使用Ctrl+C中止
我一天中的大部分时间都是这样度过的。我的 RDBMS 运行良好,有 50 亿行。我想用 10 倍的数据来测试 Cassandra,但我什至一次导入一百万行都遇到了麻烦。
关于 COPY 命令如何执行的一个观察结果是:输入命令后,它开始以每秒大约 10,000 行的速度写入。它维持这个速度,直到它插入了大约 80,000 行。然后有大约 30 秒的暂停,之后又消耗 70,000 到 90,000 行,再暂停 30 秒,依此类推,直到它完成 CSV 中的所有行或中途失败并出现错误或只是挂起。
我需要找到它的根源。我真的希望发现我在做一些愚蠢的事情,这不是我必须接受和解决的事情。
我正在使用 Cassandra 2.2.3
【问题讨论】:
-
我刚遇到这个问题,昨天还可以,但我又试了一次,现在它在大约 1000 条记录时失败了。
-
试试 cassandra-loader。效果很好。
-
cassandra-loader 提醒我错误,复制工作正常,只是错误不清楚。
-
我已停止尝试复制工作。 cassandra-loader 工作正常。你在 cassandra-loader 上遇到什么错误?
-
这是一个 dateFormat 问题。我最终修复了它,将其作为参数传入。