scala - Spark : Caching an RDD/DF for use across multiple programs

标签 scala apache-spark

我有一个正在从多个程序读取的数据集。 Spark 是否有一种方法可以有效地缓存该数据集,从而允许任何程序调用它,而不是每天多次将该数据集读入内存?

最佳答案

RDD和数据集不能在应用程序之间共享(至少没有官方API来共享内存)

但是,您可能对数据网格感兴趣。看Apache Ignite 。您可以将数据加载到 Spark,对其进行预处理并保存到网格。然后,在其他应用程序中,您可以只从 Ignite 缓存中读取数据。

有一种特殊类型的 RDD,名为 IgniteRDD,它允许您像其他数据源一样使用 Ignite 缓存。当然,像任何其他RDD一样,它可以转换为Dataset

它会是这样的:

val rdd = igniteContext.fromCache("igniteCache")
val dataFrame = rdd.toDF

有关 IgniteContext 和 IgniteRDD 的更多信息,您可以找到 here

关于scala - Spark : Caching an RDD/DF for use across multiple programs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009920/

相关文章:

ubuntu - 从 Pyspark 访问 HDFS 失败

scala - 如何为 akka-camel 端点启用 JMX 监控

eclipse - 如何从 .scala 文件创建(或运行).jar 文件?

apache-spark - yarn : Less executor memory than set via spark-submit 上的 Spark

apache-spark - Spark History Server Spark UI 作业部分中的 'Active Jobs' 是什么

apache-spark - pyspark-结构化流到 Elasticsearch

scala - scala 代码的人类可读大小单位(文件大小)(例如持续时间)

scala - 如何在 Scala intelliJ 项目中将 geoscript 作为依赖项包含在内?

scala - 为什么/如何将类型构造逻辑分离到不同的类中?

apache-spark - 如何处理Apache Spark中集群节点之间要独立处理的不同图形文件?