我正在運行一個採用由前一個作業生成的輸入的spark作業。現在,作業將結果輸出到HDFS以供下一次讀入,有沒有辦法將每個作業的輸出緩存到spark中,以便下面的運行不必從HDFS中讀取?Spark:緩存RDD在另一個作業中使用
更新:或者Spark能否在不同的應用程序之間共享RDD?
我正在運行一個採用由前一個作業生成的輸入的spark作業。現在,作業將結果輸出到HDFS以供下一次讀入,有沒有辦法將每個作業的輸出緩存到spark中,以便下面的運行不必從HDFS中讀取?Spark:緩存RDD在另一個作業中使用
更新:或者Spark能否在不同的應用程序之間共享RDD?
直接你不能做到這一點。但是,有幾個解決方案可以幫助你。
作爲@ morfious902002提到你可以使用Alluxio(但你需要將它安裝到你的集羣上),它提供了一種分層存儲(memory/hdfs/s3)。
另一種選擇是使用spark-jobserver或者持有相同spark的上下文,並通過REST API將您的作業提交給此服務器。由於所有工作都將在相同的長期生活環境下執行,因此您可以在作業之間共享RDD。
Apache Ignite將是您最好的選擇。 – morfious902002
如果你將第二份工作寫成流式工作,那麼該怎麼辦?這是可行的嗎? –
@SumitKumarGhosh不,實際上這兩個工作是相同的,他們只是反覆運行,一個工作的輸出將是同一個下一個工作的輸入。 – elgoog