python - rutas - Pickling Error al ejecutar el comando COPY: CQLShell en Windows
python recorrer archivos de una carpeta (2)
Estamos ejecutando un comando de copia en CQLShell en Windows 7. Al principio, nos encontramos con un "COMANDO DE COPIA INADECUADA":
COPY ourdata(data_time, data_ID, dataBlob)
FROM ''TestData.csv''
WITH HEADER = true;
Luego comenzamos a recibir este error después de ejecutar el mismo comando:
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
No estamos seguros de si se trata de un problema con la ruta de acceso (no hay un módulo llamado cqlsh), o de objetos de decapado de Python con el archivo csv.
Así que fui y probé esto. Creé dos tablas simples en Cassandra 2.1.5 (por cierto, ¿qué versión estás usando? ) Tanto en Windows como en Linux. Luego probé COPY TO / FROM en cada uno.
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 2;
aploetz@cqlsh:2> COPY dummy3(id,time) TO ''/home/aploetz/dummy3.txt''
WITH HEADER=true AND DELIMITER=''|'';
4 rows exported in 0.071 seconds.
aploetz@cqlsh:2> 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 ;
aploetz@cqlsh:> COPY dummy3(id,time) TO ''e:/dummy3.txt''
WITH HEADER=true AND DELIMITER=''|'';
4 rows exported in 0.020 seconds.
aploetz@cqlsh:> 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:> 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
Entonces COPY TO (exportar) funciona bien, pero COPY FROM (import) falla en Windows.
Josh McKenzie de DataStax hizo una publicación en diciembre titulada: Cassandra y Windows: pasado, presente y futuro . En él, analiza detalles de algunos de los problemas de larga data que Cassandra tiene en Windows. Básicamente Windows NTFS evita que otros procesos cambien / eliminen archivos que están en uso (bloqueados) por un proceso diferente. Y estos problemas afectan directamente la capacidad de CQLSH para COPIAR datos en Cassandra.
Existe un ticket JIRA ( CASSANDRA-9670 ) que trata un problema similar ( ejecutar scripts cql con CQLSH en Windows, produce el mismo mensaje de error ). Sospecho fuertemente que estos dos problemas están relacionados. En cualquier caso, se espera que Cassandra sea compatible con Windows con la versión 3.0, que actualmente está "en desarrollo". Intenté algunos trucos para ver si podía encontrar una solución para esto en Windows, e informaré si encuentro uno. Pero por el momento, puede que solo tenga que usar Cassandra en Linux para beneficiarse de su funcionalidad completa.
Me encontré con el mismo problema cuando uso Cassandra 2.1. Cuando actualicé el Cassandra a 2.2, el error desapareció. Intenta actualizar tu Cassandra.