2017-03-17 4 views
0

私のアルゴリズムを実装している間、私はApache Flinkでforループを使って長いチェーンの演算子を作成しました。いくつかの長さの処理を開始すると、実際に処理される前に長い時間、メソッド org.apache.flink.api.java.typeutils.runtime.kryo.Serializers.getContainedGenericTypesが停止します。どのようにこの現象を説明することができますか?どのようにこの方法の時間を短縮するために対処することができますか?Apache Flinkがメソッドorg.apache.flink.api.java.typeutils.runtime.kryo.Serializers.getContainedGenericTypesで停止するのはなぜですか?

enter image description here

+0

ストリームではどのようなデータ型を使用していますか?潜在的にあなたのKryoタイプは登録されていません。 –

+0

私は、caseクラスCell(i:Int.j:Int、v1:Int、v2:Int)のように、内部にプリミティブを持つcaseクラス型を使用しています。私はDataSet [Cell]のバッチ処理のためのシステムを探求しています。 –

+0

@rmetzgerこれらの型を明示的に何らかの方法で登録する必要がありますか? –

答えて

0

Serializers.getContainedGenericTypes()方法は、あなたのDataSetアプリケーションの計画の作成時に呼び出されます。

設定ExecutionConfig.disableAutoTypeRegistration()はこの登録を無効にします。

多くのデータなしでFlinkアプリケーションをローカルで実行しているとします。通常、プランの作成には使用可能なCPU時間のほんのわずかしかかかりません。実際の処理では、ほとんどの場合それが処理されます。

+0

はい、前提は真です。 Flinkはこの実行で数メガバイトを処理する必要があります。私は私の研究で数テラバイトをクラスタで処理したいと考えています。自動タイプ登録を無効にした後、同様の問題が発生します。私は 'org.apache.flink.optimizer.traversals'を取得しています\t〜50%、' org.apache.flink.optimizer.plan'〜32%、 'java.util'〜プロファイラのCPU時間の17%数時間。 –

+0

数メガバイトを処理する場合、大きな分散処理フレームワークは必要ありません。 Javaコレクションがその仕事をします。 数テラバイトを処理しようとすると、オプティマイザまたはタイプの登録はもはやコストを支配しません。 –

+0

問題は、ハングすることです。グラフが開始されていません。単純なオーバーヘッドではありません。私は6つの層を生成するアルゴリズムを実行したい。これでグラフの複雑さを表示しようとしました。https://gist.github.com/protsenkovi/3f0cba82978c8ea41bd191cd9a1b1714 –

関連する問題