首页 > 解决方案 > 如何使用 Apache Ignite 作为 Apache Spark 的外部数据源

问题描述

我们的 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 person, age, city.name AS city, country FROM person JOIN city ON person.city_id = city.id city:所有数据都在内存中 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-sparkignite

解决方案


  1. 您可以使用 Spark SQL 在 Ignite 和 HDFS 集群上运行联合查询。这是一个例子。此外,您始终可以启用Ignite 本机持久性并超出可用内存容量。

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


推荐阅读