比较Cassandra的CQL与Spark / Shark查询与Hive / Hadoop(DSE版本)

时间:2013-06-14 17:18:44

标签: cassandra hive cql apache-spark shark-sql

我想听听您对使用CQL和内存查询引擎Spark / Shark的想法和经验。据我所知,CQL处理器在每个节点上的Cassandra JVM中运行。与Cassandra集群连接的Shark / Spark查询处理器在一个独立的集群中运行。此外,Datastax拥有Cassandra的DSE版本,允许部署Hadoop / Hive。问题是在哪个用例中我们会选择一个特定的解决方案而不是另一个。

2 个答案:

答案 0 :(得分:31)

我会根据自己的经验分享一些想法。但是,如果可能,请告诉我们您的用例。它将帮助我们以更好的方式回答您的问题。

1-如果你的写作数量超过读数,Cassandra显然是一个不错的选择。话虽如此,如果您来自SQL背景并计划使用Cassandra,那么您肯定会发现CQL非常有用。但是如果你需要执行JOIN和GROUP BY等操作,即使CQL通过写入时间和紧凑时间排序来解决原始GROUP BY用例并实现一对多关系,CQL也不是答案。

2- Spark SQL(以前的Shark)非常快,原因有两个:内存处理和规划数据管道。内存处理使其比Hive快约100倍。与Hive一样,Spark SQL可以很好地处理大于内存的数据类型,并且由于计划的管道,速度提高了10倍。当存在多个数据管道(如filter和groupBy)时,情境会转移到Spark SQL优势。当您需要临时实时查询时,请继续使用它。当您需要长时间运行的作业而不是大量数据时,这种做法不适用。

3- Hive基本上是一个在现有Hadoop集群之上运行的仓库,为您提供类似SQL的界面来处理您的数据。但是Hive并不适合实时需求。它最适合离线批处理。不需要任何额外的infra,因为它使用底层HDFS进行数据存储。当您必须在大型数据集和OLAP上执行JOIN,GROUP BY等操作时,请执行此操作。

Note : Spark SQL在Spark之上模拟Apache Hive行为,因此它几乎支持所有Hive功能,但可能更快。它支持现有的Hive Query语言,Hive数据格式(SerDes),用户定义的函数(UDF)以及调用外部脚本的查询。

但我认为只有在弄脏手之后,您才能正确评估所有这些工具的优缺点。我可以根据你的问题提出建议。

希望这可以回答您的一些疑问。

P.S。 :以上答案仅基于我的经验。欢迎提出意见/更正。

答案 1 :(得分:5)

此处记录的基准非常努力 - https://amplab.cs.berkeley.edu/benchmark/