使用 shell 和 python 驱动程序的 Cassandra 数据导入时间
Cassandra data import time using shell and python driver
在一个特定的实例中,我使用 CQL Shell
使用 COPY
从 csv 文件导入 100k 行。平均耗时约 5.695 秒。率:17559 rows/s。
如果我使用 Cassandra Python driver
插入相同的数据,execute_async
将花费大约 13 秒。那为什么会有这么大的差异呢?
我是 运行 默认 Cassandra
Win 10 X64
本地主机。也许它与集群中的节点数量有关,或者可以从使用批处理中受益?
Cqlsh使用CassandraPython驱动,最终是调用execute_async,可以查看源码:
https://github.com/apache/cassandra/blob/trunk/pylib/cqlshlib/copyutil.py
https://github.com/apache/cassandra/tree/trunk/pylib/cqlshlib
虽然它在这一点上进行了相当大的优化。它可以为并发工作拆分令牌范围、自定义负载均衡器策略和一些较低级别的增强功能。如果可以的话,它还会将 python 转化为本机代码。
在一个特定的实例中,我使用 CQL Shell
使用 COPY
从 csv 文件导入 100k 行。平均耗时约 5.695 秒。率:17559 rows/s。
如果我使用 Cassandra Python driver
插入相同的数据,execute_async
将花费大约 13 秒。那为什么会有这么大的差异呢?
我是 运行 默认 Cassandra
Win 10 X64
本地主机。也许它与集群中的节点数量有关,或者可以从使用批处理中受益?
Cqlsh使用CassandraPython驱动,最终是调用execute_async,可以查看源码:
https://github.com/apache/cassandra/blob/trunk/pylib/cqlshlib/copyutil.py https://github.com/apache/cassandra/tree/trunk/pylib/cqlshlib
虽然它在这一点上进行了相当大的优化。它可以为并发工作拆分令牌范围、自定义负载均衡器策略和一些较低级别的增强功能。如果可以的话,它还会将 python 转化为本机代码。