Hadoopでは、 レデューサーに渡されたオブジェクトは再利用されます 。これは非常に驚くべきことであり、予期しない場合は追跡するのが困難です。さらに、 この「機能」の元のトラッカー は、この変更によって実際にパフォーマンスが向上したという証拠を提供しません(私が見逃した場合を除く)。
キーと値を再利用すると、システムが大幅に高速化されます[...]が、実行する価値があると思います。
これはこれに完全に反しているようです 非常に人気のある答え 。 Hadoop開発者の主張にはある程度の信憑性がありますか?オブジェクト作成が安価であるという概念を無効にする、Hadoopに関する「特別な」何かがありますか?
リンクした記事を読むと、
デスクトップマシンで単純な単体テストを実行すると、ランダムなバイトコンテンツを持つ1x10 ^ 6の新しいStringオブジェクトを作成する方が、単一のTextオブジェクトを使用し、setメソッドを呼び出して基礎となるバイトコンテンツを構成するよりも遅いことを強調する必要があります
まあ、それは自明です。 100万の新しい文字列を作成することは、StringBuilderを使用して単一の文字列を操作するよりも常に遅くなります。誰もが知っています。しかし、これはストローマンかもしれません。前回チェックしたときも、コレクションの各キーに個別の文字列が必要でした。
コレクションのコピーを作成するために100万個の新しい文字列を割り当てるのは費用がかかるという彼の主張であれば、そうです。結局のところ、文字列は参照型です。元の文字列への参照を保存するだけで済みます。
彼がベンチマークを完了するのを待つ必要があると思います。