我正在写一个MR作业,在reducer方面,我需要在做任何事之前检查Iterable的大小。有人问过相同的问题(How to find the size of an Iterable Object?),但提供的解决方案无法正常工作。由于Iterable没有size()方法,因此请告诉我该怎么做。 我尝试了以下选项。重置Iterable对象
试图从迭代得到一个迭代器对象,但有以下类型转换 错误。与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(); }
由于这些值的类型不同,因此不会发生命中。
请帮我一些示例代码。这个问题确实花了很多时间。 非常感谢。