【问题标题】:How to use Apache Ignite as an external data source of Apache Spark如何使用 Apache Ignite 作为 Apache Spark 的外部数据源
【发布时间】:2021-05-22 02:03:06
【问题描述】:

我们的 Apache Spark 数据库需要内存缓存来提高性能。我最近对 ​​Apache Ignite 做了一些研究,我们决定使用 Ignite 作为Spark 的外部数据源,以下是我现在发现和困惑的:

  1. 钻研代码后发现Spark SQL会转化为Ignite SQL,然后查询会被发送到各个Ignite节点,由H2引擎在其上执行,是不是所有的数据都需要在Ignite缓存中,HDFS中的数据不会被命中? 我们的数据太大了,无法将它们全部加载到内存中,我们只能将其中一些加载到内存中,也许只能加载一些小表,如果查询没有命中缓存,客户端将转向 HDFS。 我的问题是:作为 Spark 的外部数据源,我们如何在一个 Spark SQL 中扫描来自 Ignite 和 HDFS 的所有数据? 如: SELECT person.name AS 人、年龄、city.name AS 城市、国家 FROM person JOIN city ON person.city_id = city.id 城市:所有数据都在内存中 person:只有一些数据在内存中,其中一些在 HDFS 中;甚至可能没有缓存在 Ignite 中。

  2. 我们Spark的版本是3.0,Ignite目前只支持2.4,不知道Apache Ignite支持Spark 3.0的计划是什么,您对我们系统支持Spark 3.0有什么建议? 重新实现为支持 2.4 所做的所有工作是个好主意吗? https://ignite.apache.org/docs/latest/extensions-and-integrations/ignite-for-spark/ignite-dataframe

感谢您的友好建议:)

【问题讨论】:

    标签: apache-spark ignite


    【解决方案1】:
    1. 您可以使用 Spark SQL 在 Ignite 和 HDFS 集群中运行联合查询。这里是an example。此外,您始终可以启用Ignite native persistence 并超出可用内存容量。

    2. The ticket 已报告给 Ignite JIRA。投票!

    【讨论】:

    • 感谢您的回答,非常有帮助,我在 Apache Ignite 文档中没有找到。在从一个表中加载一些数据到 Ignite 的情况下,Spark 会从 Ignite(正在缓存)和 HDFS(尚未缓存)中读取所有数据,对吗?对于 Spark 3.0,我认为我们没有时间等待官方支持,可能需要我们自己做,这是一个悲伤的故事 :(
    • 是的,您对跨 HDFS 和 Ignite 执行查询的理解是正确的。至于 Spark 3.0 的支持,贡献给 Ignite,应该很简单。然后社区将发布并测试每个后续 Ignite 版本的集成。
    猜你喜欢
    • 2016-07-02
    • 2019-07-03
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    相关资源
    最近更新 更多