2015-06-03 1 views
4

Мы бежим команду копирования в CQLShell на Windows 7. Во-первых, мы столкнулись с «нецелевым COPY КОМАНДЫ»:Травление команда работает Ошибка COPY: CQLShell на Windows,

COPY ourdata(data_time, data_ID, dataBlob) 
FROM 'TestData.csv' 
WITH HEADER = true; 

позже мы начали получать это ошибка после запуска той же команды:

Error starting import process: 

Can't pickle <type 'thread.lock'>: it's not found as thread.lock 
can only join a started process 
cqlsh:testkeyspace> Traceback (most recent call last): 
       File "<string>", line 1, in <module> 
       File "C:\Program Files\DataStax\Community\python\lib\multiprocessing\forking.py", 
         line 373, in main 
       prepare(preparation_date) 
       File "C:\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 

Мы не уверены, если его проблема с пути (не модуль с именем cqlsh), или с помощью питона травильных объектов с файлом CSV.

+0

Какую версию Python вы используете? – Aaron

+0

Python Version 2.7.10 – Rdesmond

+0

Возможная помощь для других, прибывающих сюда: https://stackoverflow.com/questions/44005212/picklingerror-when-copying-a-very-large-cassandra-table-using-cqlsh/45698179#45698179 – bpgriner

ответ

3

Итак, я пошел и проверил это. Я создал две простые таблицы в 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, чтобы воспользоваться его полной функциональностью.

+0

Спасибо, я использовал версию 2.0. – Rdesmond

+0

@ Rdesmond В качестве альтернативы, посмотрите, подходит ли это для вас: https://github.com/brianmhess/cassandra-loader – Aaron

1

Я столкнулся с той же проблемой, когда использую Cassandra 2.1. Когда я обновил Cassandra до 2.2, ошибка исчезла. Попробуйте обновить свою Кассандру.

Смежные вопросы