То, что я пытаюсь выполнить, просто: Верните список, содержащий Tuple2 в качестве итератора Java.Проблемы с Scala Iterator против Java Iterator (кастинг-кошмар): как отбросить Java на Scala?
Фрагмент кода:
....public java.util.Iterator<Tuple2<Path, Text>> call(InputSplit inputSplit, java.util.Iterator<Tuple2<LongWritable, Text>> iter) throws Exception {
..... java.util.List<Tuple2<Path, Text>> elements = new java.util.ArrayList<Tuple2<Path, Text>>();
while(iter.hasNext()){
Tuple2<LongWritable,Text> tupled = iter.next();
Tuple2<Path, Text> toAdd = new Tuple2<Path, Text>(file.getPath(),tupled._2);
elements.add(toAdd);
}
java.util.Iterator<Tuple2<Path, Text>> it = elements.iterator();
return it; .....}
Примечание: переменная iter
также Java итератора.
Ошибки я получаю: java.lang.ClassCastException: java.util.ArrayList$Itr cannot be cast to scala.collection.Iterator
- Что я делаю неправильно? (Я знаю, что я использую
Tuple2
, который предназначен для Scala). - Как вернуть Java-итератор с
Tuple2
или эквивалентомTuple2
?
Спасибо
Что вы подписываете подписи? –
общественного java.util.Iterator> Вызов (InputSplit inputSplit, \t \t \t \t \t java.util.Iterator > ИТЭР) бросает исключение { ... ОБРАТИТЕ ВНИМАНИЕ: Я должен вернуть итератор JAVA –
Вы должны отредактировать свой вопрос, чтобы добавить эту информацию, ее легче читать. Какая строка дает вам эту ошибку? – vptheron