【发布时间】:2023-03-08 04:46:01
【问题描述】:
我的 cassandra 数据库中有大约 20 亿行,我使用 isin 方法根据包含 4827 个字符串的实验列表进行过滤,如下所示。但是,我注意到在 distinct 命令之后,我只有 4774 个唯一行。任何想法为什么缺少 53? isin 方法是否有阈值/限制?我对实验列表进行了两次和三次检查,它确实有 4827 个字符串,并且数据库中确实存在其他 53 个字符串,因为我可以使用 cqlsh 查询它们。非常感谢任何帮助!
Dataset<Row> df1 = sp.read().format("org.apache.spark.sql.cassandra")
.options(new HashMap<String, String>() {
{
put("keyspace", "mdb");
put("table", "experiment");
}
})
.load().select(col("experimentid")).filter(col("experimentid").isin(experimentlist.toArray()));
List<String> tmplist=df1.distinct().as(Encoders.STRING()).collectAsList();
System.out.println("tmplist "+tmplist.size());
【问题讨论】:
-
是
experimentid分区键吗? -
是的!分区键有限制吗?
-
不,我会建议更有效的解决方案 :-) 给我一些时间,写一下...
-
非常感谢!我期待你的回答! :)
-
忘了问 - 集群中有多少个节点,
mdbkeyspace 的复制因子是多少?
标签: java apache-spark cassandra spark-cassandra-connector