Итак, я пошел и проверил это. Я создал две простые таблицы в Cassandra 2.1.5 (BTW - какая версия вы используете?) как для Windows, так и для Linux. Затем я тестировал COPY TO/FROM на каждом.
Linux (Ubuntu 14.04.2 LTS):
Connected to Test Cluster at dockingbay94:9042.
[cqlsh 5.0.1 | Cassandra 2.1.5 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
[email protected]> use stackoverflow2;
[email protected]:stackoverflow2> COPY dummy3(id,time) TO '/home/aploetz/dummy3.txt'
WITH HEADER=true AND DELIMITER='|';
4 rows exported in 0.071 seconds.
[email protected]:stackoverflow2> COPY dummy4(id,time) FROM '/home/aploetz/dummy3.txt'
WITH HEADER=true AND DELIMITER='|';
4 rows imported in 0.427 seconds.
для Windows 8.1:
Connected to Window$ Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.5 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
WARNING: pyreadline dependency missing. Install to enable tab completion.
[email protected]> use stackoverflow;
[email protected]:stackoverflow> COPY dummy3(id,time) TO 'e:\dummy3.txt'
WITH HEADER=true AND DELIMITER='|';
4 rows exported in 0.020 seconds.
[email protected]:stackoverflow> COPY dummy4(id,time) FROM 'e:\dummy3.txt'
WITH HEADER=true AND DELIMITER='|';
Error starting import process:
Can't pickle <type 'thread.lock'>: it's not found as thread.lock
can only join a started process
[email protected]:stackoverflow> Traceback (most recent call last):
File "<string>", line 1, in <module>
File "E:\Program Files\DataStax Community\python\lib\multiprocessing\forking.py", line 373, in main
prepare(preparation_data)
File "E:\Program Files\DataStax Community\python\lib\multiprocessing\forking.py", line 482, in prepare
file, path_name, etc = imp.find_module(main_name, dirs)
ImportError: No module named cqlsh
Так COPY TO (экспорт) работает нормально, но COPY FROM (импорт) не будет работать на Windows, ,
Джош Маккензи из DataStax опубликовал сообщение в декабре под заголовком: Cassandra and Windows: Past, Present, and Future. В нем он обсуждает детали некоторых давних проблем, которые Cassandra имеет в Windows. По сути Windows NTFS препятствует другим процессам изменять/удалять файлы, которые используются (заблокированы) другим процессом. И эти проблемы напрямую влияют на способность CQLSH передавать данные COPY в Cassandra.
Существует билет JIRA (CASSANDRA-9670), который рассматривает подобный вопрос (работает CQL сценарии с CQLSH на Windows, дает такое же сообщение об ошибке). Я сильно подозреваю, что эти два вопроса связаны. В любом случае ожидается, что Cassandra будет поддерживаться в Windows с версией 3.0, которая в настоящее время «находится в разработке». Я попробовал несколько трюков, чтобы узнать, могу ли я найти обход для этого в Windows, и я отправлю отчет, если найду его. Но для времени вы можете просто использовать Cassandra для Linux, чтобы воспользоваться его полной функциональностью.
Какую версию Python вы используете? – Aaron
Python Version 2.7.10 – Rdesmond
Возможная помощь для других, прибывающих сюда: https://stackoverflow.com/questions/44005212/picklingerror-when-copying-a-very-large-cassandra-table-using-cqlsh/45698179#45698179 – bpgriner