1

问题:

我正在尝试获取它,以便可以使用 Cassandra 正确使用 Python。我一直在使用玩具数据集来练习将 csv 文件上传到 Cassandra,但没有成功。当我不COPY FROM用于 csv 文件时,Cassandra 似乎工作正常。

我的目的是使用这个数据集作为测试,以确保我可以将 csv 文件的信息加载到 Cassandra 中,这样我就可以为我最初打算的项目加载 5 个总计 2 GB 的 csv 文件。

注意:每当我使用CREATE TABLE然后运行SELECT * FROM tvshow_data时,列不会按照我设置它们的顺序出现,这会影响任何事情,还是没关系?

关于我的安装和使用的信息:

  • 我已经尝试运行两者cqlshcassandra使用管理员 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 tvshowCREATE 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_tvshowcqlshapache-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
4

0 回答 0