レデューサー側で何かをする前に Iterable のサイズを確認する必要がある MR ジョブを書いています。誰かがずっと前に同じ質問をしました (反復可能なオブジェクトのサイズを見つける方法は? ) が、与えられた解決策は機能していません.反復可能なオブジェクトには size() メソッドがないため、その方法を教えてください. 次のオプションを試しました。
iterable から iterator オブジェクトを取得しようとしましたが、次の型キャスト エラーが発生しました。ResettableIterator と同じエラー。
java.lang.ClassCastException: org.apache.hadoop.mapreduce.ReduceContext$ValueIterator cannot be cast to java.util.ListIterator
サイズを取得するために Iterable オブジェクトの最後まで反復する場合、どうすればインデックスの先頭に戻ることができますか。
if(values instanceof Collection){ return ((Collection)values).size(); }
値が異なるタイプであるため、これはヒットしません。
サンプルコードを教えてください。この問題は本当に時間がかかりました。どうもありがとう。!!