【问题标题】:Apache Cassandra and SparkApache Cassandra 和 Spark
【发布时间】:2016-09-15 09:06:54
【问题描述】:

我是一位经验丰富的 RDBMD 开发人员和管理员。但我是 Apache Cassandra 和 Spark 的新手。我学习了 Cassandra 的 CQL,文档说 CQL 不支持连接和子查询,因为它在 Cassandra 中效率太低,因为它具有分布式数据性质。

因此,我得出结论,在分布式数据环境中,不支持连接和子查询,因为它们会严重影响性能。

但后来我学习了 Spark,它也适用于分布式数据,但 Spark 支持所有 SQL 功能,包括连接和子查询。尽管 Spark 不是数据库系统,因此甚至没有索引......所以,我的问题是 Spark 是如何支持分布式数据的连接和子查询的?它是否有效地做到了?

提前致谢。

【问题讨论】:

    标签: sql apache-spark cassandra


    【解决方案1】:

    Apache spark 有一个 RDD(Resilient Distributed DataSet) 的概念,它是在内存中创建的。

    它基本上是 spark 中的基本 data structure

    Joins, queries 在此 RDD 上执行,并且由于它在 memory 中运行,这就是它非常高效的原因。

    请通过以下文档了解有关弹性数据集的一些想法

    http://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds
    

    【讨论】:

      【解决方案2】:

      Spark 完成了对分布式数据进行联接所需的“艰苦工作”。在实际执行连接之前,它会执行大型洗牌以对齐键上的数据。这基本上意味着任何连接都需要非常大量的数据移动,除非原始数据源是根据用于连接的键进行分区的。

      C* 不允许像这样的通用连接,因为涉及成本,它面向 OLTP 工作负载,并且需要完整的数据混洗本质上是 OLAP。

      【讨论】:

        猜你喜欢
        • 2022-07-27
        • 1970-01-01
        • 2020-05-25
        • 2017-12-17
        • 2017-06-04
        • 1970-01-01
        • 2019-04-10
        • 2018-07-08
        • 2014-08-16
        相关资源
        最近更新 更多