酸洗错误 运行 COPY 命令:CQLShell on Windows
Pickling Error running COPY command: CQLShell on Windows
我们在 Windows 7 上 运行 CQLShell 中的一个复制命令。首先,我们 运行 进入 "IMPROPER COPY COMMAND":
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 的模块),还是 python 使用 csv 文件腌制对象。
所以我去测试了一下。我在 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.
aploetz@cqlsh> use Whosebug2;
aploetz@cqlsh:Whosebug2> COPY dummy3(id,time) TO '/home/aploetz/dummy3.txt'
WITH HEADER=true AND DELIMITER='|';
4 rows exported in 0.071 seconds.
aploetz@cqlsh:Whosebug2> 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.
aploetz@cqlsh> use Whosebug;
aploetz@cqlsh:Whosebug> COPY dummy3(id,time) TO 'e:\dummy3.txt'
WITH HEADER=true AND DELIMITER='|';
4 rows exported in 0.020 seconds.
aploetz@cqlsh:Whosebug> 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
aploetz@cqlsh:Whosebug> 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 的 Josh McKenzie 在 12 月发表了一篇文章 post,标题为:Cassandra and Windows: Past, Present, and Future。在其中,他详细讨论了 Cassandra 在 Windows 上存在的一些长期存在的问题。本质上 Windows NTFS 阻止其他进程访问 changing/deleting 正在被不同进程使用(锁定)的文件。这些问题直接影响到 CQLSH 将数据复制到 Cassandra 的能力。
有一个 JIRA 票证 (CASSANDRA-9670) 解决了类似的问题 (运行 cql 脚本在 Windows 上使用 CQLSH,产生相同的错误消息).我强烈怀疑这两个问题是相关的。无论如何,Cassandra 预计将在 Windows 上支持 3.0 版,目前是 "in development." 我尝试了一些技巧以查看是否可以在 [=] 上找到 work-around 35=],如果我找到一个,我会报告。但对于 time-being,您可能只需要在 Linux 上使用 Cassandra 即可享受其全部功能。
我在使用Cassandra 2.1的时候遇到了同样的问题。当我将 Cassandra 更新到 2.2 时,错误消失了。尝试更新您的 Cassandra。
我们在 Windows 7 上 运行 CQLShell 中的一个复制命令。首先,我们 运行 进入 "IMPROPER COPY COMMAND":
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 的模块),还是 python 使用 csv 文件腌制对象。
所以我去测试了一下。我在 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.
aploetz@cqlsh> use Whosebug2;
aploetz@cqlsh:Whosebug2> COPY dummy3(id,time) TO '/home/aploetz/dummy3.txt'
WITH HEADER=true AND DELIMITER='|';
4 rows exported in 0.071 seconds.
aploetz@cqlsh:Whosebug2> 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.
aploetz@cqlsh> use Whosebug;
aploetz@cqlsh:Whosebug> COPY dummy3(id,time) TO 'e:\dummy3.txt'
WITH HEADER=true AND DELIMITER='|';
4 rows exported in 0.020 seconds.
aploetz@cqlsh:Whosebug> 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
aploetz@cqlsh:Whosebug> 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 的 Josh McKenzie 在 12 月发表了一篇文章 post,标题为:Cassandra and Windows: Past, Present, and Future。在其中,他详细讨论了 Cassandra 在 Windows 上存在的一些长期存在的问题。本质上 Windows NTFS 阻止其他进程访问 changing/deleting 正在被不同进程使用(锁定)的文件。这些问题直接影响到 CQLSH 将数据复制到 Cassandra 的能力。
有一个 JIRA 票证 (CASSANDRA-9670) 解决了类似的问题 (运行 cql 脚本在 Windows 上使用 CQLSH,产生相同的错误消息).我强烈怀疑这两个问题是相关的。无论如何,Cassandra 预计将在 Windows 上支持 3.0 版,目前是 "in development." 我尝试了一些技巧以查看是否可以在 [=] 上找到 work-around 35=],如果我找到一个,我会报告。但对于 time-being,您可能只需要在 Linux 上使用 Cassandra 即可享受其全部功能。
我在使用Cassandra 2.1的时候遇到了同样的问题。当我将 Cassandra 更新到 2.2 时,错误消失了。尝试更新您的 Cassandra。