使用Spark Connector通过分区键查询cassandra的理想方法是什么。我正在使用where
传递密钥,但这会导致cassandra在引擎盖下添加ALLAOW FILTERING
,从而导致超时。
当前设置:
csc.cassandraTable[DATA]("schema", "table").where("id =?", "xyz").map( x=> print(x))
此处id
是分区(非主要)密钥
我有一个复合主键,只使用分区键进行查询
更新: 是的,我得到了一个例外:
在一致性LOCAL_ONE读取查询期间Cassandra失败(需要1个响应,但只有0个副本响应,1个失败)
我的分区都没有超过1000条记录,我正在运行一个cassandra节点
答案 0 :(得分:1)
如果在整个分区键上使用where子句,则允许过滤不会影响查询。如果查询超时,则可能意味着您的分区非常大或未指定完整分区键
编辑:
Cassandra failure during read query at consistency LOCAL_ONE (1 responses were required but only 0 replica responded, 1 failed)
表示您的查询被发送到没有您要查找的数据副本的计算机。通常这意味着未正确设置密钥空间的复制或连接主机不正确。 LOCAL
的{{1}}部分表示只有LOCAL_ONE
上的数据可用时才允许查询成功。
考虑到这一点,你有3个选择
由于您只有1台计算机,因此更改密钥空间的复制可能是正确的做法。