如何使用 Apache Ignite 作为 Apache Spark 的外部数据源
How to use Apache Ignite as an external data source of Apache Spark
我们的 Apache Spark 数据库需要一个内存缓存来提高性能。我最近对 Apache Ignite 做了一些研究,我们决定使用 Ignite 作为 Spark 的外部数据源,以下是我现在发现和困惑的地方:
深入研究代码后,我发现Spark SQL将转换为Ignite SQL,然后查询将发送到每个Ignite节点并由H2引擎执行在它上面,这是否意味着所有数据都需要在 Ignite 缓存中,HDFS 中的数据不会被命中?
我们的数据太大,无法将它们全部加载到内存中,我们只能将它们中的一部分加载到内存中,也许只加载一些小表,如果查询没有命中缓存,客户端将转向 HDFS。
我的问题是:作为Spark的外部数据源,我们如何在一个Spark中扫描来自Ignite和HDFS的所有数据SQL?
如:
SELECT person.name 作为人,年龄,city.name 作为城市,国家 FROM person JOIN city ON person.city_id = city.id
city:所有数据都在内存中
person:只有一部分数据在内存,一部分在HDFS;甚至可能没有缓存在 Ignite 中。
我们的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
感谢您的宝贵建议:)
您可以 运行 使用 Spark SQL 跨 Ignite 和 HDFS 集群联合查询。这是 an example. Also, you can always enable Ignite native persistence 并且超出可用内存容量。
The ticket 已报告给 Ignite JIRA。投票!
我们的 Apache Spark 数据库需要一个内存缓存来提高性能。我最近对 Apache Ignite 做了一些研究,我们决定使用 Ignite 作为 Spark 的外部数据源,以下是我现在发现和困惑的地方:
深入研究代码后,我发现Spark SQL将转换为Ignite SQL,然后查询将发送到每个Ignite节点并由H2引擎执行在它上面,这是否意味着所有数据都需要在 Ignite 缓存中,HDFS 中的数据不会被命中? 我们的数据太大,无法将它们全部加载到内存中,我们只能将它们中的一部分加载到内存中,也许只加载一些小表,如果查询没有命中缓存,客户端将转向 HDFS。 我的问题是:作为Spark的外部数据源,我们如何在一个Spark中扫描来自Ignite和HDFS的所有数据SQL? 如: SELECT person.name 作为人,年龄,city.name 作为城市,国家 FROM person JOIN city ON person.city_id = city.id city:所有数据都在内存中 person:只有一部分数据在内存,一部分在HDFS;甚至可能没有缓存在 Ignite 中。
我们的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
感谢您的宝贵建议:)
您可以 运行 使用 Spark SQL 跨 Ignite 和 HDFS 集群联合查询。这是 an example. Also, you can always enable Ignite native persistence 并且超出可用内存容量。
The ticket 已报告给 Ignite JIRA。投票!