我有一个正在从多个程序读取的数据集。 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/