我想知道如何将计算的rdd保存到不同的位置。 同样扩展它以便在没有计算的情况下通知。
rdd = <do some action>
我知道rdd.saveAstextFile("s3://<location1>")
将存储到location1
,
但如果我想存储到location2
也该怎么做?
我不确定persist/cache
(我的理解是主节点中的cache/persist
)是否会起作用rdd
大小非常大。
请帮忙。
答案 0 :(得分:0)
你在哪里找到这个?这是不正确的。根据下面的火花文档说明。我的理解是它会在主节点中缓存/持久化。
Spark中最重要的功能之一是跨操作在内存中持久化(或缓存)数据集。当您持久保存RDD时,每个节点都会存储它在内存中计算的任何分区,并在该数据集(或从中派生的数据集)的其他操作中重用它们。这使得未来的行动更快(通常超过10倍)。缓存是迭代算法和快速交互使用的关键工具。
此外,
cache()方法是使用默认存储级别的简写,即StorageLevel.MEMORY_ONLY
即cache()类似于persist(StorageLevel.MEMORY_ONLY)。 请按照此链接确定根据您的要求使用哪个存储级别。 https://spark.apache.org/docs/2.1.0/programming-guide.html#which-storage-level-to-choose
您可以使用以下方式在两个位置保存:
rdd.cache()
rdd.saveAstextFile("s3://<location1>")
rdd.saveAstextFile("s3://<location2>")
详情请见https://spark.apache.org/docs/2.1.0/programming-guide.html#rdd-persistence