我尝试根据 Cassandra 查询语言 (CQL) 识别引擎(Cassandra、Scylla、AstraDB、CosmosDB、Yugabyte 等)。我专注于表system.local和system.peers,请参阅示例:
SELECT release_version FROM system.local;
和
SELECT release_version FROM system.peers;
但我没有得到有关系统/引擎的相关信息。你解决了这个问题吗?
我尝试根据 Cassandra 查询语言 (CQL) 识别引擎(Cassandra、Scylla、AstraDB、CosmosDB、Yugabyte 等)。我专注于表system.local和system.peers,请参阅示例:
SELECT release_version FROM system.local;
和
SELECT release_version FROM system.peers;
但我没有得到有关系统/引擎的相关信息。你解决了这个问题吗?
我使用标准“cassandra-driver”来访问 Cassandra 和 Scylla,以便通过 BatchStatement 插入/更新数据。我通过批量 500 行进行更新,并且仅针对 Cassandra 出现此错误(对于 Scylla 一切正常):
Error from server: code=2200 [Invalid query] message="Batch too large"
Python代码参见:
from cassandra import ConsistencyLevel
from cassandra.cluster import Cluster
from cassandra.cluster import ExecutionProfile
from cassandra.cluster import EXEC_PROFILE_DEFAULT
from cassandra.query import BatchStatement
...
cluster = Cluster(contact_points=["localhost"],
port=9042,
execution_profiles={EXEC_PROFILE_DEFAULT: profile},
control_connection_timeout=60,
idle_heartbeat_interval=60,
connect_timeout=60)
session = cluster.connect(keyspace="catalog")
...
insert_statement = session.prepare(f"INSERT INTO rn6.t01 ({columns}) VALUES ({items})")
batch = BatchStatement(consistency_level=ConsistencyLevel.ONE)
data_frm = pandas.DataFrame(generator.integers(999999,
size=(run_setup.bulk_row, run_setup.bulk_col)),
columns=[f"fn{i}" for i in range(run_setup.bulk_col)])
# prepare data
for row in data_frm.values:
batch.add(insert_statement, row)
session.execute(batch)
Cassandra 和 Scylla 似乎对批处理语句有不同的默认限制。这些限制你知道吗?