【问题标题】:SparkSQL restrict queries by Cassandra partition key rangesSparkSQL 通过 Cassandra 分区键范围限制查询
【发布时间】:2016-03-14 20:00:23
【问题描述】:

假设我的主键是timestamp

我想通过时间戳范围限制查询。

即使我使用了token(),我似乎也无法让它发挥作用。我也无法在分区键上创建二级索引。

这应该怎么做?

【问题讨论】:

标签: apache-spark cassandra


【解决方案1】:

Cassandra 不允许对分区键进行范围查询。

处理此问题的一种方法是更改​​您的架构,以便您的时间戳值将是一个集群列。为此,您需要引入一个哨兵列作为分区键。请参阅此问题以获得更详细的答案:Range Queries in Cassandra (CQL 3.0)

另一种方法是让 Spark 进行过滤。对主键的范围查询应该在 Spark SQL 中工作。它们根本不会被推送到 Cassandra,Spark 会获取所有数据并在 Spark 端过滤它们。

【讨论】:

  • 这是有道理的。 SparkSQL 过滤是否可以表示为where 子句,即使它不会被下推?
  • 还有一个问题:Cassandra 不允许通过token() 对分区键进行范围查询吗?这就是 Spark 在后台所做的对吧?
猜你喜欢
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2015-03-10
  • 2016-07-21
  • 1970-01-01
相关资源
最近更新 更多