python - 酸洗错误运行 COPY 命令 : CQLShell on Windows

标签 python csv cassandra cassandra-2.0 cqlsh

我们在 Windows 7 上的 CQLShell 中运行复制命令。起初,我们遇到了“不正确的复制命令”:

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 pickling 对象与 csv 文件有关。

最佳答案

所以我去测试了一下。我在 Windows 和 Linux 上的 Cassandra 2.1.5(顺便说一句,您使用的是哪个版本?)中创建了两个简单的表。然后我在每个上测试了 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 stackoverflow2;
aploetz@cqlsh:stackoverflow2> COPY dummy3(id,time) TO '/home/aploetz/dummy3.txt' 
    WITH HEADER=true AND DELIMITER='|';

4 rows exported in 0.071 seconds.
aploetz@cqlsh:stackoverflow2> COPY dummy4(id,time) FROM '/home/aploetz/dummy3.txt' 
    WITH HEADER=true AND DELIMITER='|';

4 rows imported in 0.427 seconds.

window 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 stackoverflow;
aploetz@cqlsh:stackoverflow> COPY dummy3(id,time) TO 'e:\dummy3.txt' 
    WITH HEADER=true AND DELIMITER='|';

4 rows exported in 0.020 seconds.
aploetz@cqlsh: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
aploetz@cqlsh: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 的 Josh McKenzie 于 12 月发表了一篇题为:Cassandra and Windows: Past, Present, and Future 的帖子.在其中,他详细讨论了 Cassandra 在 Windows 上存在的一些长期存在的问题。本质上,Windows NTFS 会阻止其他进程更改/删除正在被不同进程使用(锁定)的文件。这些问题直接影响到 CQLSH 将数据复制到 Cassandra 的能力。

有一张 JIRA 票证 (CASSANDRA-9670) 解决了类似的问题(在 Windows 上使用 CQLSH 运行 cql 脚本,产生相同的错误消息)。我强烈怀疑这两个问题是相关的。无论如何,Cassandra 预计将在 Windows 3.0 版本上得到支持,该版本目前正在“开发中”。我尝试了一些技巧以查看是否可以在 Windows 上找到解决此问题的方法,如果找到的话我会报告。但就目前而言,您可能只需要在 Linux 上使用 Cassandra 即可享受其全部功能。

关于python - 酸洗错误运行 COPY 命令 : CQLShell on Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627309/

相关文章:

Cassandra 将数据移动到另一个新的 Cassandra 节点 -

java - 无法从源代码构建 Cassandra

cassandra - Spark : How to join RDDs by time range

python - 以随机方式生成没有0值的矩阵

python - 是否需要removeWidget()

python - 使用 pandas 从 csv 文件中读回元组

Java如何从ArrayList中删除重复项

powershell - 将列添加到CSV Windows PowerShell

python - 如何忽略 GraphicsItem 上的 mousePressEvent (PyQt4)

python parse 仅打印列表中的第一行