按分区键

时间:2016-02-23 06:29:51

标签: apache-spark cassandra spark-cassandra-connector

使用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节点

1 个答案:

答案 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. 更改查询的初始连接目标
  2. 更改密钥空间的复制
  3. 更改查询的一致性级别
  4. 由于您只有1台计算机,因此更改密钥空间的复制可能是正确的做法。