apache-spark - 如何使用 Apache Ignite 作为 Apache Spark 的外部数据源
问题描述
我们的 Apache Spark 数据库需要内存缓存来提高性能。我最近对 Apache Ignite 做了一些研究,我们决定使用 Ignite 作为Spark 的外部数据源,以下是我现在发现和困惑的内容:
钻研代码后发现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 中。
我们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 集群上运行联合查询。这是一个例子。此外,您始终可以启用Ignite 本机持久性并超出可用内存容量。
该票已报告给 Ignite JIRA。投票!
推荐阅读
- php - 使用 for 循环在树枝中打印出一个数组
- flutter - 在 null 上调用了方法“[]”。接收者:null 尝试调用:[]("status")
- javascript - addEventListener for 循环中基于索引的参数
- r - 如何在 R 中遍历数据框名称的向量?
- csv - 为什么使用 pyspark 读取 csv 文件时会出现错误?
- android - LocationManager 首次在三星设备中未提供确切位置
- python - 如何在 Python 中编写无限 for 循环并从数组项中添加变量?
- javascript - 如何在 PHP 中访问 JavaScript 变量?
- nestjs - 没有找到“AlicuotasIva”的存储库。看起来这个实体没有在当前的“默认”连接中注册?
- angular - 更改后订阅未更新