【发布时间】:2013-07-13 01:46:55
【问题描述】:
我正在编写一个 MR 工作,在减速器方面,我需要在做任何事情之前检查 Iterable 的大小。很久以前有人确实问过同样的问题(How to find the size of an Iterable Object?),但给出的解决方案不起作用。由于 Iterable 没有 size() 方法,请建议我怎么做。 我尝试了以下选项。
试图从可迭代对象中获取迭代器对象,但得到以下类型转换 错误。与 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(); }这不会受到影响,因为值的类型不同。
请帮助我提供一些示例代码。这个问题确实花了很多时间。 非常感谢。!!
【问题讨论】: