2016-09-14 5 views
1

私はスパークするために新しいです。そしてさらにKryoに新しい。私のsparkアプリケーションでは、値オブジェクトをシリアル化するためにkryoを使用していますが、アルゴリズムを格納するオブジェクトにはSerializableインターフェイスを使用しています...その理由は、すべての単一クラスをKryoに登録したくないからです。Sparkシリアル化戦略 - Kryoを排他的に使用する必要がありますか?

私はkryoを排他的に使用するべきですか? 混合は&と一致しています(私がやっているようなものです)?

答えて

1

spark.serializerorg.apache.spark.serializer.KryoSerializerに設定すると、RDD内のすべてのオブジェクト(クロージャはカバーされません)がKryoを使用してシリアル化されます。クラス登録はパフォーマンスを向上させるための唯一の方法です(登録されたクラスでは、完全修飾クラス名ではなく整数IDのみが必要です)。詳細については、Kryoのドキュメントrelevant sectionを参照してください。

言い換えれば、パフォーマンスを気にするなら、あなたのプログラムにシリアライズしなければならないすべてのクラスを登録しなければなりませんが、既にKryoを使用しています。


*クロージャはそのいくつかのオブジェクトが閉鎖を経由して渡されることになっている場合は、まだjava.io.Serializableを使用する必要があることには影響しませんKryoで標準のJavaシリアライゼーションと登録を使用して直列化されています。

+0

素晴らしい!私はいつも閉鎖さえもKryo経由で連載されていると思っていましたが、それは意味がありませんでした...ありがとう! – hba

関連する問題