2017-06-19 4 views
0

kryoシリアル化のクラスを登録することは何を意味するのか分かりません。 はlinkがここkryoシリアル化でクラスを登録する意味

Kryoはすべて直列化タイプをサポートしていないと言うと、最高のパフォーマンスを得るために、事前にあなたがプログラムで使用しますクラスを登録する必要がありますいくつかの背景を与えるために。

また、クラスを登録する意味は何ですか?すべての種類のオブジェクトを直列化するために同じロジックを適用する意味で、直列化コードは静的ではありませんか。シリアライズされるクラスを先進的に言及することは、後で役に立つでしょうか?

ありがとうございます!

+1

ここでは例を挙げました。https://stackoverflow.com/questions/32667068/save-spark-dataframe-into-elasticsearch-can -t-handle-type-exception – eliasah

答えて

0

Kyro docs事前に登録する必要はありませんが、初めてクラスに遭遇するとパフォーマンスが向上することに言及します。クラスの名前はシリアル化する必要はありません。代わりに登録中に生成されたものを使用することができ、その結果、使用されるバイト数が少なくなります。

抜粋:

Kryoは、オブジェクトのインスタンスを書き出すときは、まずそれは、オブジェクトのクラスを識別する何かを書く必要があります。デフォルトでは、完全修飾クラス名が記述され、次にオブジェクトのバイトが書き込まれます。同じオブジェクトグラフ内のそのオブジェクト型のその後の出現は、可変長intを使用して記述されます。クラス名を書くことはいくぶん非効率なので、事前にクラスを登録することができます: