私はRMIクラスタを持っています。各RMIサーバには、Sparkコンテキストがあります。 異なるSparkコンテキスト間でRDDを共有する方法はありますか?2つのSparkコンテキスト間でSpark RDDを共有するには?
答えて
いいえ、RDDは1つのSparkContext
に結び付けられています。一般的な考え方は、Sparkクラスターと、クラスターに何をすべきかを伝える1つのドライバープログラムがあることです。このドライバにはSparkContext
があり、RDDで操作を開始します。
RDDをあるドライバプログラムから別のドライバプログラムに移動する場合は、最初のドライバのディスク(S3/HDFS/...)に書き込んで、もう一方のドライバのディスクから読み込みます。
Daniel Darabosがすでに述べたように、それは不可能です。 Sparkのすべての分散オブジェクトは、それを作成するために使用された特定のコンテキストにバインドされています(データセットの場合はSQLContext
)SparkContext
RDDの場合。アプリケーション間でオブジェクトを共有する場合は、共有コンテキストを使用する必要があります(たとえば、spark-jobserver
、Livy、またはApache Zeppelinを参照)。 RDD
またはDataFrame
はちょうど小さなローカルオブジェクトなので、実際に共有することはあまりありません。
データの共有はまったく別の問題です。特殊なメモリキャッシュ(Apache Ignite)やメモリファイルシステム(Alluxio - 旧Tachyonなど)を使用すると、アプリケーション間の切り替え時のレイテンシを最小限に抑えることができますが、実際には回避することはできません。
私の理解では、RDDはデータではありませんが、元のデータから変換/フィルタを介してデータを作成する方法です。
別の考え方ではなく、最終的なデータを共有することです。だから、あなたのような、データ・ストアにRDDを格納します: - HDFS(寄木細工のファイルなど。) - Elasticsearch - (インメモリ)のApacheのIgnite
私は、あなたは、ApacheのIgniteを愛すると思います:https://ignite.apache.org/features/igniterdd.html
アパッチのIgniteは、同じアプリケーション内で、または異なるスパーク アプリケーション間のいずれかで、容易に複数のスパーク ジョブを横切って、メモリ内の状態を共有することを可能にするスパークRDD抽象 の実装を提供します。
IgniteRDDが実装され 、処理を実行するスパークジョブ内またはスパークワーカーに、またはそれ自身のクラスタ内のいずれかで配備することができる分散型のIgniteキャッシュ、 上図のようになります。
(私はあなたが探しているものを見つけるために彼らのドキュメントを掘るしましょう。)
- 1. 2つのストリーム間のSparkストリーミング共有状態
- 2. Sparkで2つのRDDをシリアルで処理するには?
- 3. sparkで2つのプリセットされたrddをマージするには?
- 4. Spark(Scala)で2つのRDDを結合する方法は?
- 5. Apache Sparkで2つのRDDに参加する
- 6. SparkでJavaRDDパーティション間でデータを共有する方法は?
- 7. Sparkでは、2人のエグゼキュータの間でデータを共有できますか?
- 8. Pythonで2つのRDDを結合するSpark
- 9. カスタム関数で2つのRDDを結合する - SPARK
- 10. Apache Spark:異なるパーティショナーと2つのRDDに参加する
- 11. Apache Spark RDDのコレクションを1つのRDDに変換するJava
- 12. Spark RDD:並列操作のためにデータを共有する方法
- 13. SparkでScalaを使用して2つのRDDに参加
- 14. Sparkで既存のRDDにRDDを追加するには?
- 15. Apache Spark RDDワークフロー
- 16. トランザクションブロック| Spark SQL、rdd
- 17. RDD Aggregate in spark
- 18. SparkとBloomFilterの共有
- 19. Spark DataFrame(RDD)のメタデータ
- 20. Spark rddとSpark sqlの関係は何ですか?
- 21. Apache Spark RDD分割 "|"
- 22. RSpec変数を共有コンテキスト間で共有する方法は?
- 23. spark-shell(spark 2.1.1)のsparkのハイブサポートを有効にする方法
- 24. spark rddをpandasデータフレームに変換する
- 25. 列をRDDに追加するSpark 1.2.1
- 26. Sparkの機能に基づいて共通鍵を使用しない2つのRDDに参加する
- 27. SparkのケースクラスのRDDにデータフレームを戻す
- 28. spark rddが空になるまで.count()
- 29. Spark DataSetとRDDの違い
- 30. RDDとApache Sparkのパーティション