2016-11-11 7 views
3

最近、スプリングとハイバネートを導入したflinkジョブの開発に関するいくつかの問題が発生し、そのジョブはflinkクラスタ上で実行されます。ですから、ジョブマネージャではなくタスクマネージャでflink演算子を実行する前に、春のリソースを初期化する必要があります。しかし、StreamExecutionEnvironmentの適切なメソッドを見つけることができません。flink環境でflinkジョブのスプリングリソースを初期化する方法

は、私は以下のようないくつかのアプローチを試してみました:

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); 
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); 
// etl business logic as flink operators 
FlinkOperators.run(); 
env.execute(); 

はしかし、その並列処理FLINKジョブは複数の実行、ときに春の初期化は、ませは、各タスクマネージャのプロセスになります。だから私はフリンク仕事で春を使うことはできません。

flinkジョブでスプリングリソースを初期化する方法はありますか?

ありがとうございました。

よろしくお願いいたします。

アルビン

+0

私は今問題がありました。解決策を見つけましたか? – zt1983811

答えて

0

静的変数の中にあるものを初期化された値を格納します(あなたがスカラ座を使用する場合は、オブジェクト内の関数)静的関数を構築し、各タスクマネージャのコンテキスト初期化のいくつかの種類を持っている必要があり毎回。

静的な値は各タスクマネージャのメモリに保存されるので、これで十分です。

このaproachを使用して、各タスクマネージャーのプロパティーファイルをロードします。これらのプロパティーファイルにはジョブごとの構成が含まれています。ファイルをロードする場合、ロードするファイルのコピーが各taskmanagerにあることを確認します。

関連する問題