问题:
我正在尝试获取它,以便可以使用 Cassandra 正确使用 Python。我一直在使用玩具数据集来练习将 csv 文件上传到 Cassandra,但没有成功。当我不COPY FROM
用于 csv 文件时,Cassandra 似乎工作正常。
我的目的是使用这个数据集作为测试,以确保我可以将 csv 文件的信息加载到 Cassandra 中,这样我就可以为我最初打算的项目加载 5 个总计 2 GB 的 csv 文件。
注意:每当我使用
CREATE TABLE
然后运行SELECT * FROM tvshow_data
时,列不会按照我设置它们的顺序出现,这会影响任何事情,还是没关系?
关于我的安装和使用的信息:
- 我已经尝试运行两者
cqlsh
并cassandra
使用管理员 powershell。 apache-cassandra-3.11.6
我在文件夹中安装了 Python 2.7 。- 我安装了 Cassandra 3.11.6 版。
- 我安装了 cassandra-driver 3.18.0 和 conda。
- 我使用 Python 3.7 安装除了 Cassandra 的目录之外的所有内容。
- 我都试过了
CREATE TABLE tvshow
和CREATE TABLE tvshow.tvshow_data
。
我的 Python 脚本:
from cassandra.cluster import Cluster
cluster = Cluster()
session = cluster.connect()
create_and_add_file_to_tvshow = [
"DROP KEYSPACE tvshow;",
"CREATE KEYSPACE tvshow WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};",
"USE tvshow;",
"CREATE TABLE tvshow.tvshow_data (id int PRIMARY KEY, title text, year int, age int, imdb decimal, rotten_tomatoes int, netflix int, hulu int, prime_video int, disney_plus int, is_tvshow int);",
"COPY tvshow_data (id, title, year, age, imdb, rotten_tomatoes, netflix, hulu, prime_video, disney_plus, is_tvshow) FROM 'C:tvshows.csv' WITH HEADER = true;"
]
print('\n')
for query in create_and_add_file_to_tvshow:
session.execute(query)
print(query, "\nsuccessful\n")
结果python
错误:
这是我在 powershell 中使用以下命令运行代码时遇到的错误,python cassandra_test.py
.
cassandra.protocol.SyntaxException: <Error from server: code=2000 [Syntax error in
CQL query] message="line 1:0 no viable alternative at input 'COPY' ([
结果cqlsh
错误:
在目录中运行后在powershell中的变量中运行前面所述的cqlsh
代码,会产生以下错误。create_and_add_file_to_tvshow
cqlsh
apache-cassandra-3.1.3/bin/
注意:以下错误只是代码的前几行以及最后的新行,我选择不包含它,因为它有几百行。如有必要,我将包括它。
Starting copy of tvshow.tvshow_data with columns [id, title, year, age, imdb, rotten_tomatoes, netflix, hulu, prime_video, disney_plus, is_tvshow].
Failed to import 0 rows: IOError - Can't open 'C:tvshows.csv' for reading: no matching file found, given up after 1 attempts
Process ImportProcess-44:
PTrocess ImportProcess-41:
raceback (most recent call last):
PTPProcess ImportProcess-42:
...
...
...
AA cls._loop.add_timer(timer)
AAttributeError: 'NoneType' object has no attribute 'add_timer'
ttributeError: 'NoneType' object has no attribute 'add_timer'
AttributeError: 'NoneType' object has no attribute 'add_timer'
ttributeError: 'NoneType' object has no attribute 'add_timer'
ttributeError: 'NoneType' object has no attribute 'add_timer'
Processed: 0 rows; Rate: 0 rows/s; Avg. rate: 0 rows/s
0 rows imported from 0 files in 1.974 seconds (0 skipped).
用于导入的 csv 文件的前 10 行示例
我已经尝试只用前两行创建一个 csv 文件,用于玩具的玩具测试,因为我无法得到任何其他工作。
id,title,year,age,imdb,rotten_tomatoes,netflix,hulu,prime_video,disney_plus,is_tvshow
0,Breaking Bad,2008,18+,9.5,96%,1,0,0,0,1
1,Stranger Things,2016,16+,8.8,93%,1,0,0,0,1
2,Money Heist,2017,18+,8.4,91%,1,0,0,0,1
3,Sherlock,2010,16+,9.1,78%,1,0,0,0,1
4,Better Call Saul,2015,18+,8.7,97%,1,0,0,0,1
5,The Office,2005,16+,8.9,81%,1,0,0,0,1
6,Black Mirror,2011,18+,8.8,83%,1,0,0,0,1
7,Supernatural,2005,16+,8.4,93%,1,0,0,0,1
8,Peaky Blinders,2013,18+,8.8,92%,1,0,0,0,1