首页 文章

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

提问于
浏览
13

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

2 回答

  • 5

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

    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)以及调用外部脚本的查询 .

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

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

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

  • 31

    这里记录的基准有很好的努力 - https://amplab.cs.berkeley.edu/benchmark/

相关问题