2016-06-16 9 views
2

In einer bestimmten Instanz habe ich CQL Shell verwendet, um 100k Zeilen aus einer CSV-Datei mit COPY zu importieren. Es dauerte etwa 5,695 Sekunden bei Avg. Rate: 17559 Zeilen/s.Cassandra-Datenimportzeit mit Shell- und Python-Treiber

Wenn ich die gleichen Daten mit Cassandra Python driver eingefügt habe, dauert execute_async etwa 13 Sekunden. Warum gibt es einen so großen Unterschied?

Ich bin Standard Cassandra localhost auf ausgeführt. Vielleicht hat es etwas mit der Anzahl der Knoten im Cluster zu tun oder kann von der Verwendung von Batch profitieren?

Antwort

2

Cqlsh die Cassandra Python-Treiber verwendet und schließlich ruft execute_async ist, kann Quelle anzuzeigen:

https://github.com/apache/cassandra/blob/trunk/pylib/cqlshlib/copyutil.py https://github.com/apache/cassandra/tree/trunk/pylib/cqlshlib

Es ist ziemlich schwer, obwohl an dieser Stelle optimiert. Es macht Dinge wie die Aufteilung der Token-Bereiche für gleichzeitige Arbeit, benutzerdefinierte Load-Balancer-Richtlinien und einige Verbesserungen auf niedrigerer Ebene. Außerdem führt es das Python in den nativen Code ein, wenn es möglich ist.