2017-12-15 9 views
1

Flink参照データの格納先/アクセス先のアドバイスを探しています。ここのユースケースは本当にシンプルです - 私は国のリストを持つ単一の列のテキストファイルを持っています。私はツイッターデータをストリーミングしていて、ツイートの(解析済み)ロケーションフィールドに基づいてテキストファイルから国を照合しています。私のFlink Mapper(つまりFlinks MapFunctionを実装しています)の静的なBuildメソッドを使ってルーチンが起動すると、静的なArrayListが設定されているため、IDE(Eclipse)ではすべて役に立ちます。そうでなければシリアライゼーションでシャツを取得するので、このクラスは内部的に静的です。 Pointは、オーバーライドされたマップ関数がストリーム内から実行時に呼び出されると、国データの静的配列は待機中であり、完全に移入され、照合の準備ができています。魅力を発揮します。しかし、Flinkクラスターにデプロイされたとき(実際にテキストファイルを見つけるために実際にコードを取得するには、先週、地獄に戻りました)、配列はで、はBuildメソッドの一部として取り込まれています。データが使用されると、不思議なことにデータが消えてしまい、配列サイズが0になってしまいました。(エゴ、多くの一致が見つかりません.2つの質問があります。 Eclipseの単体テストの多くは無意味ですが)もっと一般的には、Flink内のこのような静的で固定された参照データを参照する正しい方法は何でしょうか?(またEclipseとクラスタは、...)Flink参照データのアドバイス/ベストプラクティス

答えて

0

静的参照データを処理するための標準的な方法はRichMapFunction or RichFlatMapFunctionopen方法でデータをロードすることである。豊富な機能を作成し、ローカルの状態を確定するために有用であるopenclose方法を有しており、アクセスすることができますランタイムコンテキスト。

+0

パーフェクト。参照データをRichMapFunctionの 'Open'メソッドに移入していた 'Build'メソッドを移動し、すべて機能しました。 (リフレクション・マインドでは、これをプリ・フリンク処理のいくつかの処理に移す方が良いでしょう。つまり、参照データは既にフリフが最初にカフカから消費しているデータの一部です。 –

関連する問題