2016-01-19 55 views
2

在兩個spark任務之間共享spark RDD數據的最佳方式是什麼?如何在兩個應用程序之間共享Spark RDD的數據

我有一個案例,其中工作1:Spark Sliding窗口流應用程序,將定期使用數據並創建RDD。這我們不想堅持存儲。

作業2:查詢將訪問在作業1中創建的相同RDD並生成報告的作業。

我已經看到很少的疑問,他們建議SPARK作業服務器,但因爲它是一個開源不知道它是否可能的解決方案,但任何指針都會有很大的幫助。

謝謝!

回答

2

簡短的回答是你不能在作業之間共享RDD。您可以共享數據的唯一方法是將該數據寫入HDFS,然後在其他作業中提取數據。如果速度是一個問題,並且您希望保持恆定的數據流,則可以使用HBase,這將允許從第二個作業進行非常快速的訪問和處理。

爲了得到一個更好的主意,你應該看看這裏:

Serializing RDD

0

根據官方文檔描述:

注意,沒有一個模式目前提供跨應用程序的內存共享。如果您希望以這種方式共享數據,我們建議運行一個服務器應用程序,通過查詢相同的RDD來服務多個請求。 http://spark.apache.org/docs/latest/job-scheduling.html

0

您可以使用Apache Ignite在不同的應用程序之間共享RDD。 Apache ignite提供了一個抽象來共享應用程序可以通過其訪問與不同應用程序相對應的RDD的RDD。此外,Ignite支持SQL索引,而Spark本身不支持。 詳情請參閱https://ignite.apache.org/features/igniterdd.html

+0

雖然這可能在理論上回答這個問題,但[這將是更可取的](// meta.stackoverflow.com/q/8259)在這裏包含答案的基本部分,並提供供參考的鏈接。 – manetsus

相關問題