【问题标题】:To get all rows where my boolean field is null in cassandra在cassandra中获取我的布尔字段为空的所有行
【发布时间】:2020-04-18 05:32:25
【问题描述】:

我通过在 cassandra 中添加一个布尔类型的新列(比如说 x)来更改表。现在我想要 x 为空的所有行。 SELECT * FROM mytable WHERE x is null 之类的......我在许多 vlog 中读到 cassandra 不支持 null 类型。

所以,请告诉我是否有其他方法可以检索行。

【问题讨论】:

    标签: database cassandra datastax cassandra-3.0 cqlsh


    【解决方案1】:

    通常,SELECT * FROM TABLE WHERE col = something 对于 Cassandra 来说通常是一个非常糟糕的查询,直到 col 至少是分区键。由于 Cassandra 是分布式系统,它需要从所有节点获取数据并返回。当 Cassandra 集群中的数据量比较大时,这个查询很可能会超时。

    您仍然可以执行类似的查询,但会更复杂。您可以:

    • 将 Spark 与 Spark Cassandra Connector 一起使用(请参阅 doc 文件夹中的文档);
    • 通过将查询拆分为多个覆盖各个令牌范围,对所有节点上的数据执行有效扫描,这样您就可以并行处理各个节点上的数据,而不会使协调节点过载。我有 an example of Java code 可以用作基础,但 Spark 可能更容易实现。

    附:我建议从 Cassandra 的基础知识开始了解它是如何工作的——如果你了解你能做什么和不能做什么,它会让你的生活更轻松。一开始你可以从DS201 course on DataStax Academy开始。

    【讨论】:

    • 嗨,Alex,我想将令牌子查询功能添加到我的代码中,但想知道我可能会看到多少性能提升?在我当前的项目中,我们使用保守的复制因子,因此每个节点都有每个副本。期望通过这样做得到提升是否仍然有意义?
    • 这真的取决于实现。如果您经常这样做,那么我只建议将 spark 部署到 cassandra 节点并在 spark cassandra 连接器中享受特殊的负载平衡策略,该策略将尝试完全避免网络通信
    猜你喜欢
    • 2017-07-14
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多