Spark对CQL有哪些额外的好处?

时间:2015-12-02 09:57:44

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

我们正在探索SPARK for cassandra,以克服CQL的局限性。

我们最初仅限于CQL,但在RDBMS方面遇到的障碍/障碍很少。仅举几例如下

  1. 用于比较>(大于)<列上的(小于),我们被限制为具有Clustering键中的列。即使我在群集中有一个列,我仍然应该提供分区键来做<或者>关于群集密钥。
  2. 无法检查任何列值
  3. 上的NULL
  4. 为了在任何列上查询其他分区键,我们必须在该列上创建索引
  5. ORDER BY不是CLUSTERING KEY的列
  6. GROUP BY限制
  7. 加入表格
  8. 我是cassandra的新手,由于局限性,我最终会重新审视我的架构。

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

1 个答案:

答案 0 :(得分:2)

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,DBMSes,Mongo和今天的大多数其他数据库)进出Cassandra表进出ETL

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

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

如果您希望通过Cassandra进行非常快速的分析查询并支持更新而不需要缓存,那么请查看我的项目http://github.com/tuplejump/FiloDB