Sparkを使用して約1500のリモートOracleテーブルからデータを取得したいと思っていましたが、スレッドごとにテーブルをピックアップするマルチスレッドアプリケーションそれぞれのテーブルから読み取るスパークジョブを起動します。スパークは、アプリケーション間でのスケジューリングのための設備を提供で実行されていることを公式火花サイトからマルチスレッドドライバからApache Spark SQLジョブを起動する
それは、これが働くことができることは明らかだhttps://spark.apache.org/docs/latest/job-scheduling.html ...
...クラスタマネージャ。次に、各Sparkアプリケーション内で、複数の「ジョブ」(Sparkアクション)が異なるスレッドによってサブミットされた場合、同時に実行されている可能性があります。アプリケーションがネットワーク経由で要求を処理している場合は、これが一般的です。 Sparkには、各SparkContext内でリソースをスケジュールするための公平なスケジューラが含まれています。
あなたはSOあり、この同様の質問には受け入れ答えはなかったし、ほとんどのupvoted答えは
で始まる。これは、スパーク
の精神で実際にはないことを Concurrent job Execution in Spark投稿この中で気づいたかもしれませんが
- 誰もが、それはスパークの精神が何であるかを気にスパーク
- の「精神」ではありません知っていますか?実際には何も意味しません。
誰もこれまでのように何かを手に入れましたか?特別なことをしなければなりませんでしたか?私は多くの作業時間を無駄にする前に、ちょっとした指針を求めていました。私は本当にこれに関する助けに感謝します!
分散ワーカープールを持つのは、ワーカーマネージャを活用してドライバーノードではなく、クラスター自体のジョブをスケジュールすることなので、Sparkの精神ではありません。なぜ、複数のドライバではなく、sparkcontextごとに複数のジョブレット/タスクが必要で、通常の抽象化を使用します(ドライバ→ワーカー→ドライバ→実際のワーカー)。何らかの理由で糸クライアントまたはスタンドアロンモードに強制されていますか? – cowbert
実際には現在私は糸クライアントモードに強制されています。私はツェッペリンですべてをやっている。しかし、私がいなくても、仕事のすべてがまったく同じことをしているので、むしろ1つのアーティファクト(1人のドライバー)しか持たないだろう。少なくとも、フェアスケジューラが私の代わりに仕事のスケジューリングをよりうまく処理するかどうかを確認することは、面白いテストです。また、Sparkのドキュメントによると、これはネットワークアプリケーションの実行方法であり、それは変わったものではない –
私がここで使用する技術について説明しました:https://stackoverflow.com/a/47733522/1138523 –