gpt4 book ai didi

java - cassandra从java代码更新表

转载 作者:行者123 更新时间:2023-12-02 11:24:00 26 4
gpt4 key购买 nike

我正在尝试在 Cassandra 中为表实现各种分区。我的基本想法是为每一行分配一些磁盘编号,然后根据磁盘编号将它们放入不同的 View 中。对于 RoundRobin 分区,我正在做的事情是:

System.out.println("\n\nRR PARTITIONING\n\n");
results = session.execute("select * from user;");
int i=0, disk_no=0, total_disks=4;
for(Row row: results)
{
String emailid = row.getString("email");
disk_no = i++%total_disks;
session.execute("update user set disk_no="+disk_no+" where email="+emailid+";");

System.out.println("Disk "+disk_no+ ": "+ row.getString("firstname")+" "+row.getString("lastname")+" "+ row.getInt("age"));
}
session.execute("create materialized view RRDisk0 as select * from user where disk_no =0 and email is not null;");
session.execute("create materialized view RRDisk1 as select * from user where disk_no =1 and email is not null;");
session.execute("create materialized view RRDisk2 as select * from user where disk_no =2 and email is not null;");
session.execute("create materialized view RRDisk3 as select * from user where disk_no =3 and email is not null;");

我遇到的错误如下:

Exception in thread "main" com.datastax.driver.core.exceptions.SyntaxError: line 1:44 no viable alternative at character '@'

请帮助我,我已经为此工作了两个小时,但无法查明出了什么问题。

最佳答案

您忘记在更新查询中引用 emailid 值。这应该是:

`session.execute("update user set disk_no="+disk_no+" where email='"+emailid+"';");`

关于java - cassandra从java代码更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49726473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com