【问题标题】:What additional benefits does Spark give over CQL?与 CQL 相比,Spark 有哪些额外的好处?
【发布时间】:2015-12-02 09:57:43
【问题描述】:

我们正在探索用于 cassandra 的 SPARK,以克服 CQL 的限制。

我们最初仅限于 CQL,但在 RDBMS 上遇到了一些障碍/障碍。仅举几例如下

  1. 为了比较列上的 >(大于),我们被限制为具有聚类键中的列。即使我在集群中有一个列,我仍然应该提供分区键以在集群键上执行 。
  2. 无法检查任何列值是否为 NULL
  3. 为了查询其他分区键的任何列,我们必须在该列上创建索引
  4. ORDER BY 不是 CLUSTERING KEY 的列
  5. 按限制分组
  6. 加入表

我是 cassandra 的新手,由于限制,我经常重新访问我的架构。

因此类似于 HDFS 的 HIVE/PIG,Spark 与 CQL 相比有哪些额外的好处?

【问题讨论】:

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


    【解决方案1】:

    CQL 不能替代 SQL。它实际上是为从几个(通常是一个)分区键中提取值而设计的,并且正如您所指出的,它不会进行任何类型的聚合、分组、非常有限的排序等(尽管 Cassandra 3.0 将具有 UDF 和 UDA) .

    以下是 Spark 通过 CQL 提供的功能:

    • 通过 DataFrame 和 SQL 进行常规聚合和查询,包括 JOIN、GROUP BY、ORDER BY 和 UDF
    • 如果您使用 sqlContext.cacheTable 将 Cassandra 数据缓存在内存中,则查询速度会显着提高 - 数量级更快
    • 使用 Scala、Java、Python 和 R API 集成机器学习、统计、图形处理和几乎任何类型的分布式计算
    • 能够在许多其他数据源(包括各种 HDFS 格式、Amazon S3、DBMS、Mongo 和当今大多数其他数据库)中进出 Cassandra 表的 ETL

    Spark 确实是与 CQL 完全不同的野兽。它提供对大量数据的复杂分析,而 CQL 没有。但是,也有一些限制:

    • Spark 不擅长高并发查询。为此,您希望保持查询简单并使用 CQL 提取非常少量的数据。
    • 在 Spark 中缓存数据不是 HA,当您将新数据写入 C* 时无法更新

    如果您想通过 Cassandra 进行非常快速的分析查询,支持更新且无需缓存,请查看我的项目 http://github.com/tuplejump/FiloDB

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 1970-01-01
      • 2012-07-21
      • 2013-09-22
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多